summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--newlib/ChangeLog5
-rw-r--r--newlib/libc/string/str-two-way.h2
2 files changed, 6 insertions, 1 deletions
diff --git a/newlib/ChangeLog b/newlib/ChangeLog
index 22a7cd06f..53ce03675 100644
--- a/newlib/ChangeLog
+++ b/newlib/ChangeLog
@@ -1,5 +1,10 @@
2008-10-02 Jeff Johnston <jjohnstn@redhat.com>
+ * 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 <jjohnstn@redhat.com>
+
* libc/sys/linux/include/stdint.h (SIZE_MAX): Fix value which should
be size of size_t, not int.
(SIZE_MIN): Remove.
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. */