fixed bug #28974 : overflow in array_slice()
The same kind of overflow appeared in array_splice(), substr() and
substr_replace()
/* ..and the length */
if (length < 0) {
length = num_in-offset+length;
- } else if (offset+length > num_in) {
+ } else if (((unsigned) offset + (unsigned) length) > num_in) {
length = num_in-offset;
}
/* ..and the length */
if (length_val < 0) {
length_val = num_in-offset_val+length_val;
- } else if (offset_val+length_val > num_in) {
+ } else if (((unsigned) offset_val + (unsigned)length_val) > num_in) {
length_val = num_in-offset_val;
}
}
}
- if ((start + len) > len1) {
+ if (((unsigned) start + (unsigned) len) > len1) {
len = len1 - start;
}
RETURN_FALSE;
}
- if ((f + l) > Z_STRLEN_PP(str)) {
+ if (((unsigned) f + (unsigned) l) > Z_STRLEN_PP(str)) {
l = Z_STRLEN_PP(str) - f;
}
}
}
- if ((f + l) > Z_STRLEN_PP(str)) {
+ if (((unsigned) f + (unsigned) l) > Z_STRLEN_PP(str)) {
l = Z_STRLEN_PP(str) - f;
}