]> granicus.if.org Git - php/commitdiff
- MFH: Use memcmp() for binary safety.
authorMoriyoshi Koizumi <moriyoshi@php.net>
Fri, 12 Sep 2008 23:37:21 +0000 (23:37 +0000)
committerMoriyoshi Koizumi <moriyoshi@php.net>
Fri, 12 Sep 2008 23:37:21 +0000 (23:37 +0000)
ext/mbstring/mbstring.c

index 776537aca4802d8db37270d7ac3383b2eb5f0750..a4116c9ae3194330bef3bef6dab16b1ac9f0a3ca 100644 (file)
@@ -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);
+       }
 }
 /* }}} */