From 2dd8e6ec279d5d6c2844bf64321f3c6665c9a032 Mon Sep 17 00:00:00 2001 From: Moriyoshi Koizumi Date: Fri, 12 Sep 2008 23:37:21 +0000 Subject: [PATCH] - MFH: Use memcmp() for binary safety. --- ext/mbstring/mbstring.c | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c index 776537aca4..a4116c9ae3 100644 --- a/ext/mbstring/mbstring.c +++ b/ext/mbstring/mbstring.c @@ -4110,14 +4110,12 @@ PHP_FUNCTION(mb_check_encoding) php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to create converter"); RETURN_FALSE; } - mbfl_buffer_converter_illegal_mode(convd, MBSTRG(current_filter_illegal_mode)); - mbfl_buffer_converter_illegal_substchar(convd, MBSTRG(current_filter_illegal_substchar)); + mbfl_buffer_converter_illegal_mode(convd, MBFL_OUTPUTFILTER_ILLEGAL_MODE_NONE); + mbfl_buffer_converter_illegal_substchar(convd, 0); /* initialize string */ - mbfl_string_init(&string); + mbfl_string_init_set(&string, mbfl_no_language_neutral, no_encoding); mbfl_string_init(&result); - string.no_encoding = no_encoding; - string.no_language = MBSTRG(language); string.val = (unsigned char *)var; string.len = var_len; @@ -4125,18 +4123,13 @@ PHP_FUNCTION(mb_check_encoding) illegalchars = mbfl_buffer_illegalchars(convd); mbfl_buffer_converter_delete(convd); - if (ret != NULL) { - MBSTRG(illegalchars) += illegalchars; - if (illegalchars == 0 && strncmp(string.val, ret->val, string.len) == 0) { - efree(ret->val); - RETURN_TRUE; - } else { - efree(ret->val); - RETURN_FALSE; - } - } else { - RETURN_FALSE; - } + RETVAL_FALSE; + if (ret != NULL) { + if (illegalchars == 0 && string.len == result.len && memcmp(string.val, result.val, string.len) == 0) { + RETVAL_TRUE; + } + mbfl_string_clear(&result); + } } /* }}} */ -- 2.50.1