From bee7973e52a184a9bde60b5cda7a2c47c97e36ef Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Wed, 19 Jun 2019 13:23:02 +0200 Subject: [PATCH] Use unsigned chars in php_uuencode() Avoid shift UB on signed integers. --- ext/standard/uuencode.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) 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; } /* }}} */ -- 2.50.1