]> granicus.if.org Git - php/commitdiff
make sure err_char is initialized properly
authorAntony Dovgal <tony2001@php.net>
Thu, 21 Dec 2006 00:25:16 +0000 (00:25 +0000)
committerAntony Dovgal <tony2001@php.net>
Thu, 21 Dec 2006 00:25:16 +0000 (00:25 +0000)
Zend/zend_unicode.c

index b0f1fec41a83df8b31e4e07dc8f01bef660a2f2c..9bf1d26566495477225eab85f22d23a2f8b8a1d7 100644 (file)
@@ -413,6 +413,7 @@ static void zend_default_conversion_error_handler(char *message, UConverter *con
                UChar32 codepoint;
                char *message_fmt = "%s (converter %s failed on character {U+%04X} at offset %d)";
 
+               memset(&err_char, '\0', U16_MAX_LENGTH);
                ucnv_getInvalidUChars(conv, err_char, &err_char_len, &status);
                codepoint = (err_char_len < 2) ? err_char[0] : U16_GET_SUPPLEMENTARY(err_char[0], err_char[1]);
 
@@ -425,6 +426,7 @@ static void zend_default_conversion_error_handler(char *message, UConverter *con
                char *p;
                int i;
 
+               memset(&err_char, '\0', 8);
                ucnv_getInvalidChars(conv, err_char, &err_char_len, &status);
                p = buf;
                for (i = 0; i < err_char_len; i++) {
@@ -476,6 +478,7 @@ static void zend_call_conversion_error_handler(char *message, UConverter *conv,
                UChar err_char[U16_MAX_LENGTH];
                int8_t err_char_len = sizeof(err_char);
 
+               memset(&err_char, '\0', U16_MAX_LENGTH);
                ucnv_getInvalidUChars(conv, err_char, &err_char_len, &status);
                ZVAL_UNICODEL(z_char, err_char, err_char_len, 1);
                ZVAL_LONG(z_offset, error_char_offset-1);
@@ -483,6 +486,7 @@ static void zend_call_conversion_error_handler(char *message, UConverter *conv,
                char err_char[8]; /* UTF-8 uses up to 8 bytes */
                int8_t err_char_len = sizeof(err_char);
 
+               memset(&err_char, '\0', 8);
                ucnv_getInvalidChars(conv, err_char, &err_char_len, &status);
                ZVAL_STRINGL(z_char, err_char, err_char_len, 1);
                ZVAL_LONG(z_offset, error_char_offset-err_char_len);