summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2019-06-19 13:23:02 +0200
committerNikita Popov <nikita.ppv@gmail.com>2019-06-19 15:09:00 +0200
commitbee7973e52a184a9bde60b5cda7a2c47c97e36ef (patch)
treedac3c06648c6b864a10bb0a82afcda19bada5289
parent0c0659dc50dc17b267072f95c6e1ebddcc91e82d (diff)
downloadphp-git-bee7973e52a184a9bde60b5cda7a2c47c97e36ef.tar.gz
Use unsigned chars in php_uuencode()
Avoid shift UB on signed integers.
-rw-r--r--ext/standard/uuencode.c10
1 files 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;
}
/* }}} */