From: Nikita Popov Date: Wed, 19 Jun 2019 11:23:02 +0000 (+0200) Subject: Use unsigned chars in php_uuencode() X-Git-Tag: php-7.4.0alpha2~51^2~17 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bee7973e52a184a9bde60b5cda7a2c47c97e36ef;p=php Use unsigned chars in php_uuencode() Avoid shift UB on signed integers. --- diff --git a/ext/standard/uuencode.c b/ext/standard/uuencode.c index bfe605a49b..dbc99a9634 100644 --- a/ext/standard/uuencode.c +++ b/ext/standard/uuencode.c @@ -66,16 +66,16 @@ PHPAPI zend_string *php_uuencode(char *src, size_t src_len) /* {{{ */ { size_t len = 45; - char *p, *s, *e, *ee; + unsigned char *p, *s, *e, *ee; zend_string *dest; /* encoded length is ~ 38% greater than the original Use 1.5 for easier calculation. */ dest = zend_string_safe_alloc(src_len/2, 3, 46, 0); - p = ZSTR_VAL(dest); - s = src; - e = src + src_len; + p = (unsigned char *) ZSTR_VAL(dest); + s = (unsigned char *) src; + e = s + src_len; while ((s + 3) < e) { ee = s + len; @@ -122,7 +122,7 @@ PHPAPI zend_string *php_uuencode(char *src, size_t src_len) /* {{{ */ *p++ = '\n'; *p = '\0'; - dest = zend_string_truncate(dest, p - ZSTR_VAL(dest), 0); + dest = zend_string_truncate(dest, (char *) p - ZSTR_VAL(dest), 0); return dest; } /* }}} */