summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/standard/url_scanner_ex.c19
-rw-r--r--ext/standard/url_scanner_ex.h2
-rw-r--r--ext/standard/url_scanner_ex.re19
-rw-r--r--main/output.c28
-rw-r--r--main/php_output.h6
5 files changed, 33 insertions, 41 deletions
diff --git a/ext/standard/url_scanner_ex.c b/ext/standard/url_scanner_ex.c
index 3d7aa985b8..6b406e673f 100644
--- a/ext/standard/url_scanner_ex.c
+++ b/ext/standard/url_scanner_ex.c
@@ -79,7 +79,7 @@ static PHP_INI_MH(OnUpdateTags)
val = strchr(key, '=');
if (val) {
char *q;
- int keylen;
+ size_t keylen;
*val++ = '\0';
for (q = key; *q; q++)
@@ -351,7 +351,7 @@ static inline void xx_mainloop(url_adapt_state_ex_t *ctx, const char *newdata, s
char *end, *q;
char *xp;
char *start;
- int rest;
+ size_t rest;
smart_str_appendl(&ctx->buf, newdata, newlen);
@@ -906,10 +906,13 @@ yy76:
stop:
- rest = YYLIMIT - start;
- scdebug(("stopped in state %d at pos %d (%d:%c) %d\n", STATE, YYCURSOR - ctx->buf.c, *YYCURSOR, *YYCURSOR, rest));
- /* XXX: Crash avoidance. Need to work with reporter to figure out what goes wrong */
- if (rest < 0) rest = 0;
+ if (YYLIMIT < start) {
+ /* XXX: Crash avoidance. Need to work with reporter to figure out what goes wrong */
+ rest = 0;
+ } else {
+ rest = YYLIMIT - start;
+ scdebug(("stopped in state %d at pos %d (%d:%c) %d\n", STATE, YYCURSOR - ctx->buf.c, *YYCURSOR, *YYCURSOR, rest));
+ }
if (rest) memmove(ctx->buf.s->val, start, rest);
ctx->buf.s->len = rest;
@@ -993,7 +996,7 @@ static int php_url_scanner_ex_deactivate(TSRMLS_D)
return SUCCESS;
}
-static void php_url_scanner_output_handler(char *output, uint output_len, char **handled_output, uint *handled_output_len, int mode TSRMLS_DC)
+static void php_url_scanner_output_handler(char *output, size_t output_len, char **handled_output, size_t *handled_output_len, int mode TSRMLS_DC)
{
size_t len;
@@ -1023,7 +1026,7 @@ static void php_url_scanner_output_handler(char *output, uint output_len, char *
}
}
-PHPAPI int php_url_scanner_add_var(char *name, int name_len, char *value, int value_len, int urlencode TSRMLS_DC)
+PHPAPI int php_url_scanner_add_var(char *name, size_t name_len, char *value, size_t value_len, int urlencode TSRMLS_DC)
{
smart_str val = {0};
zend_string *encoded;
diff --git a/ext/standard/url_scanner_ex.h b/ext/standard/url_scanner_ex.h
index 3c5b68c95b..2a9b6921bf 100644
--- a/ext/standard/url_scanner_ex.h
+++ b/ext/standard/url_scanner_ex.h
@@ -28,7 +28,7 @@ PHP_RINIT_FUNCTION(url_scanner_ex);
PHP_RSHUTDOWN_FUNCTION(url_scanner_ex);
PHPAPI char *php_url_scanner_adapt_single_url(const char *url, size_t urllen, const char *name, const char *value, size_t *newlen TSRMLS_DC);
-PHPAPI int php_url_scanner_add_var(char *name, int name_len, char *value, int value_len, int urlencode TSRMLS_DC);
+PHPAPI int php_url_scanner_add_var(char *name, size_t name_len, char *value, size_t value_len, int urlencode TSRMLS_DC);
PHPAPI int php_url_scanner_reset_vars(TSRMLS_D);
#include "zend_smart_str_public.h"
diff --git a/ext/standard/url_scanner_ex.re b/ext/standard/url_scanner_ex.re
index 2e74b1fb30..fed628f089 100644
--- a/ext/standard/url_scanner_ex.re
+++ b/ext/standard/url_scanner_ex.re
@@ -77,7 +77,7 @@ static PHP_INI_MH(OnUpdateTags)
val = strchr(key, '=');
if (val) {
char *q;
- int keylen;
+ size_t keylen;
*val++ = '\0';
for (q = key; *q; q++)
@@ -287,7 +287,7 @@ static inline void xx_mainloop(url_adapt_state_ex_t *ctx, const char *newdata, s
char *end, *q;
char *xp;
char *start;
- int rest;
+ size_t rest;
smart_str_appendl(&ctx->buf, newdata, newlen);
@@ -358,10 +358,13 @@ state_val:
*/
stop:
- rest = YYLIMIT - start;
- scdebug(("stopped in state %d at pos %d (%d:%c) %d\n", STATE, YYCURSOR - ctx->buf.c, *YYCURSOR, *YYCURSOR, rest));
- /* XXX: Crash avoidance. Need to work with reporter to figure out what goes wrong */
- if (rest < 0) rest = 0;
+ if (YYLIMIT < start) {
+ /* XXX: Crash avoidance. Need to work with reporter to figure out what goes wrong */
+ rest = 0;
+ } else {
+ rest = YYLIMIT - start;
+ scdebug(("stopped in state %d at pos %d (%d:%c) %d\n", STATE, YYCURSOR - ctx->buf.c, *YYCURSOR, *YYCURSOR, rest));
+ }
if (rest) memmove(ctx->buf.s->val, start, rest);
ctx->buf.s->len = rest;
@@ -445,7 +448,7 @@ static int php_url_scanner_ex_deactivate(TSRMLS_D)
return SUCCESS;
}
-static void php_url_scanner_output_handler(char *output, uint output_len, char **handled_output, uint *handled_output_len, int mode TSRMLS_DC)
+static void php_url_scanner_output_handler(char *output, size_t output_len, char **handled_output, size_t *handled_output_len, int mode TSRMLS_DC)
{
size_t len;
@@ -475,7 +478,7 @@ static void php_url_scanner_output_handler(char *output, uint output_len, char *
}
}
-PHPAPI int php_url_scanner_add_var(char *name, int name_len, char *value, int value_len, int urlencode TSRMLS_DC)
+PHPAPI int php_url_scanner_add_var(char *name, size_t name_len, char *value, size_t value_len, int urlencode TSRMLS_DC)
{
smart_str val = {0};
zend_string *encoded;
diff --git a/main/output.c b/main/output.c
index f44ae178b4..3cafebb730 100644
--- a/main/output.c
+++ b/main/output.c
@@ -86,12 +86,12 @@ static inline void php_output_init_globals(zend_output_globals *G)
/* }}} */
/* {{{ stderr/stdout writer if not PHP_OUTPUT_ACTIVATED */
-static int php_output_stdout(const char *str, size_t str_len)
+static size_t php_output_stdout(const char *str, size_t str_len)
{
fwrite(str, 1, str_len, stdout);
return str_len;
}
-static int php_output_stderr(const char *str, size_t str_len)
+static size_t php_output_stderr(const char *str, size_t str_len)
{
fwrite(str, 1, str_len, stderr);
/* See http://support.microsoft.com/kb/190351 */
@@ -100,7 +100,7 @@ static int php_output_stderr(const char *str, size_t str_len)
#endif
return str_len;
}
-static int (*php_output_direct)(const char *str, size_t str_len) = php_output_stderr;
+static size_t (*php_output_direct)(const char *str, size_t str_len) = php_output_stderr;
/* }}} */
/* {{{ void php_output_header(TSRMLS_D) */
@@ -238,15 +238,8 @@ PHPAPI int php_output_get_status(TSRMLS_D)
/* {{{ int php_output_write_unbuffered(const char *str, size_t len TSRMLS_DC)
* Unbuffered write */
-PHPAPI int php_output_write_unbuffered(const char *str, size_t len TSRMLS_DC)
+PHPAPI size_t php_output_write_unbuffered(const char *str, size_t len TSRMLS_DC)
{
-#if PHP_DEBUG
- if (len > UINT_MAX) {
- php_error(E_WARNING, "Attempt to output more than UINT_MAX bytes at once; "
- "output will be truncated %lu => %lu",
- (unsigned long) len, (unsigned long) (len % UINT_MAX));
- }
-#endif
if (OG(flags) & PHP_OUTPUT_DISABLED) {
return 0;
}
@@ -259,21 +252,14 @@ PHPAPI int php_output_write_unbuffered(const char *str, size_t len TSRMLS_DC)
/* {{{ int php_output_write(const char *str, size_t len TSRMLS_DC)
* Buffered write */
-PHPAPI int php_output_write(const char *str, size_t len TSRMLS_DC)
+PHPAPI size_t php_output_write(const char *str, size_t len TSRMLS_DC)
{
-#if PHP_DEBUG
- if (len > UINT_MAX) {
- php_error(E_WARNING, "Attempt to output more than UINT_MAX bytes at once; "
- "output will be truncated %lu => %lu",
- (unsigned long) len, (unsigned long) (len % UINT_MAX));
- }
-#endif
if (OG(flags) & PHP_OUTPUT_DISABLED) {
return 0;
}
if (OG(flags) & PHP_OUTPUT_ACTIVATED) {
php_output_op(PHP_OUTPUT_HANDLER_WRITE, str, len TSRMLS_CC);
- return (int) len;
+ return len;
}
return php_output_direct(str, len);
}
@@ -1272,7 +1258,7 @@ static int php_output_handler_compat_func(void **handler_context, php_output_con
if (func) {
char *out_str = NULL;
- uint out_len = 0;
+ size_t out_len = 0;
func(output_context->in.data, output_context->in.used, &out_str, &out_len, output_context->op TSRMLS_CC);
diff --git a/main/php_output.h b/main/php_output.h
index 02b2b85d13..c176063c3b 100644
--- a/main/php_output.h
+++ b/main/php_output.h
@@ -110,7 +110,7 @@ typedef struct _php_output_context {
#define PHP_OUTPUT_TSRMLS(ctx) TSRMLS_FETCH_FROM_CTX((ctx)->tsrm_ls)
/* old-style, stateless callback */
-typedef void (*php_output_handler_func_t)(char *output, uint output_len, char **handled_output, uint *handled_output_len, int mode TSRMLS_DC);
+typedef void (*php_output_handler_func_t)(char *output, size_t output_len, char **handled_output, size_t *handled_output_len, int mode TSRMLS_DC);
/* new-style, opaque context callback */
typedef int (*php_output_handler_context_func_t)(void **handler_context, php_output_context *output_context);
/* output handler context dtor */
@@ -206,8 +206,8 @@ PHPAPI void php_output_set_implicit_flush(int flush TSRMLS_DC);
PHPAPI const char *php_output_get_start_filename(TSRMLS_D);
PHPAPI int php_output_get_start_lineno(TSRMLS_D);
-PHPAPI int php_output_write_unbuffered(const char *str, size_t len TSRMLS_DC);
-PHPAPI int php_output_write(const char *str, size_t len TSRMLS_DC);
+PHPAPI size_t php_output_write_unbuffered(const char *str, size_t len TSRMLS_DC);
+PHPAPI size_t php_output_write(const char *str, size_t len TSRMLS_DC);
PHPAPI int php_output_flush(TSRMLS_D);
PHPAPI void php_output_flush_all(TSRMLS_D);