diff --git a/newlib/ChangeLog b/newlib/ChangeLog index 22a7cd06f..53ce03675 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,3 +1,8 @@ +2008-10-02 Jeff Johnston + + * libc/string/str-two-way.h (critical_factorization): Cast the index + operation to ensure unsigned rollover occurs when adding to SIZE_MAX. + 2008-10-02 Jeff Johnston * libc/sys/linux/include/stdint.h (SIZE_MAX): Fix value which should diff --git a/newlib/libc/string/str-two-way.h b/newlib/libc/string/str-two-way.h index ad71a2595..72b60c39c 100644 --- a/newlib/libc/string/str-two-way.h +++ b/newlib/libc/string/str-two-way.h @@ -114,7 +114,7 @@ critical_factorization (const unsigned char *needle, size_t needle_len, while (j + k < needle_len) { a = CANON_ELEMENT (needle[j + k]); - b = CANON_ELEMENT (needle[max_suffix + k]); + b = CANON_ELEMENT (needle[(size_t)(max_suffix + k)]); if (a < b) { /* Suffix is smaller, period is entire prefix so far. */