]> granicus.if.org Git - php/commitdiff
base64_decode: remove redundant code
authorLauri Kenttä <lauri.kentta@gmail.com>
Wed, 25 May 2016 16:52:11 +0000 (19:52 +0300)
committerNikita Popov <nikic@php.net>
Tue, 5 Jul 2016 14:51:36 +0000 (16:51 +0200)
case 1 is already handled in the first lines of the for loop;
it would only be entered in the invalid case where the string
continues past the defined length (ch != 0 but length-- == 0).

case 2 and case 3 are redundant, since k >= j and later the
string is truncated to j characters anyway.

ext/standard/base64.c

index ea548159c68bbde7f99f3f8cf2e6f7cf8f22bb4d..dc3e52071b159299385fec185f4d8ace4101d4f3 100644 (file)
@@ -136,8 +136,7 @@ PHPAPI zend_string *php_base64_decode(const unsigned char *str, size_t length) /
 PHPAPI zend_string *php_base64_decode_ex(const unsigned char *str, size_t length, zend_bool strict) /* {{{ */
 {
        const unsigned char *current = str;
-       int ch, i = 0, j = 0, k;
-       /* this sucks for threaded environments */
+       int ch, i = 0, j = 0;
        zend_string *result;
 
        result = zend_string_alloc(length, 0);
@@ -197,19 +196,6 @@ PHPAPI zend_string *php_base64_decode_ex(const unsigned char *str, size_t length
                i++;
        }
 
-       k = j;
-       /* mop things up if we ended on a boundary */
-       if (ch == base64_pad) {
-               switch(i % 4) {
-               case 1:
-                       zend_string_free(result);
-                       return NULL;
-               case 2:
-                       k++;
-               case 3:
-                       ZSTR_VAL(result)[k] = 0;
-               }
-       }
        ZSTR_LEN(result) = j;
        ZSTR_VAL(result)[ZSTR_LEN(result)] = '\0';