From 30bafc70ccb2c8f154135a65e7519680d601d2f2 Mon Sep 17 00:00:00 2001 From: Benno Schulenberg Date: Mon, 24 May 2021 11:00:29 +0200 Subject: [PATCH] tweaks: prevent two more size_t subtractions from going negative This fully fixes https://savannah.gnu.org/bugs/?60658. Found by compiling with -fsanitize=undefined. --- src/chars.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/chars.c b/src/chars.c index e733f6f4..770e64a7 100644 --- a/src/chars.c +++ b/src/chars.c @@ -498,7 +498,7 @@ char *revstrstr(const char *haystack, const char *needle, size_t tail_len = strlen(pointer); if (tail_len < needle_len) - pointer += tail_len - needle_len; + pointer -= (needle_len - tail_len); while (pointer >= haystack) { if (strncmp(pointer, needle, needle_len) == 0) @@ -518,7 +518,7 @@ char *revstrcasestr(const char *haystack, const char *needle, size_t tail_len = strlen(pointer); if (tail_len < needle_len) - pointer += tail_len - needle_len; + pointer -= (needle_len - tail_len); while (pointer >= haystack) { if (strncasecmp(pointer, needle, needle_len) == 0)