diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2020-01-28 16:18:46 +0100 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2020-01-30 10:07:25 +0100 |
commit | 43465768f1aba95afd1ea5a0ac40af2cb440d1e4 (patch) | |
tree | 783a95528c4b1f4b0829c012bbd9d6a611340e20 /ext/mbstring | |
parent | 9aadcb18e1d6c7f7736a00e246e193671353d741 (diff) | |
download | php-git-43465768f1aba95afd1ea5a0ac40af2cb440d1e4.tar.gz |
Fix shift ub in mbstring
Ideally "c" would be an unsigned integer...
Diffstat (limited to 'ext/mbstring')
-rw-r--r-- | ext/mbstring/libmbfl/filters/mbfilter_ucs4.c | 8 | ||||
-rw-r--r-- | ext/mbstring/libmbfl/filters/mbfilter_utf32.c | 8 |
2 files changed, 8 insertions, 8 deletions
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_ucs4.c b/ext/mbstring/libmbfl/filters/mbfilter_ucs4.c index 26ae5d47cc..34715cd560 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_ucs4.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_ucs4.c @@ -139,7 +139,7 @@ int mbfl_filt_conv_ucs4_wchar(int c, mbfl_convert_filter *filter) if (endian) { n = c & 0xff; } else { - n = (c & 0xff) << 24; + n = (c & 0xffu) << 24; } filter->cache = n; filter->status++; @@ -164,7 +164,7 @@ int mbfl_filt_conv_ucs4_wchar(int c, mbfl_convert_filter *filter) break; default: if (endian) { - n = (c & 0xff) << 24; + n = (c & 0xffu) << 24; } else { n = c & 0xff; } @@ -195,7 +195,7 @@ int mbfl_filt_conv_ucs4be_wchar(int c, mbfl_convert_filter *filter) if (filter->status == 0) { filter->status = 1; - n = (c & 0xff) << 24; + n = (c & 0xffu) << 24; filter->cache = n; } else if (filter->status == 1) { filter->status = 2; @@ -251,7 +251,7 @@ int mbfl_filt_conv_ucs4le_wchar(int c, mbfl_convert_filter *filter) filter->cache |= n; } else { filter->status = 0; - n = ((c & 0xff) << 24) | filter->cache; + n = ((c & 0xffu) << 24) | filter->cache; CK((*filter->output_function)(n, filter->data)); } return c; diff --git a/ext/mbstring/libmbfl/filters/mbfilter_utf32.c b/ext/mbstring/libmbfl/filters/mbfilter_utf32.c index 9f7ddf1dea..3281cf9494 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_utf32.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_utf32.c @@ -138,7 +138,7 @@ int mbfl_filt_conv_utf32_wchar(int c, mbfl_convert_filter *filter) if (endian) { n = c & 0xff; } else { - n = (unsigned) (c & 0xff) << 24; + n = (c & 0xffu) << 24; } filter->cache = n; filter->status++; @@ -163,7 +163,7 @@ int mbfl_filt_conv_utf32_wchar(int c, mbfl_convert_filter *filter) break; default: if (endian) { - n = (c & 0xff) << 24; + n = (c & 0xffu) << 24; } else { n = c & 0xff; } @@ -199,7 +199,7 @@ int mbfl_filt_conv_utf32be_wchar(int c, mbfl_convert_filter *filter) if (filter->status == 0) { filter->status = 1; - n = (c & 0xff) << 24; + n = (c & 0xffu) << 24; filter->cache = n; } else if (filter->status == 1) { filter->status = 2; @@ -260,7 +260,7 @@ int mbfl_filt_conv_utf32le_wchar(int c, mbfl_convert_filter *filter) filter->cache |= n; } else { filter->status = 0; - n = ((c & 0xff) << 24) | filter->cache; + n = ((c & 0xffu) << 24) | filter->cache; if (n < MBFL_WCSPLANE_UTF32MAX && (n < 0xd800 || n > 0xdfff)) { CK((*filter->output_function)(n, filter->data)); } else { |