diff options
author | Rich Felker <dalias@aerifal.cx> | 2014-04-18 17:38:35 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2014-04-18 17:38:35 -0400 |
commit | 476cd1d96560aaf7f210319597556e7fbcd60469 (patch) | |
tree | 15d02708160ed765160ed8bec3885441eeba21c2 /src/string/memmem.c | |
parent | fbeadd150feaa7993250d2d6739df670d4539e54 (diff) | |
download | musl-476cd1d96560aaf7f210319597556e7fbcd60469.tar.gz musl-476cd1d96560aaf7f210319597556e7fbcd60469.tar.xz musl-476cd1d96560aaf7f210319597556e7fbcd60469.zip |
fix false negatives with periodic needles in strstr, wcsstr, and memmem
in cases where the memorized match range from the right factor exceeded the length of the left factor, it was wrongly treated as a mismatch rather than a match. issue reported by Yves Bastide.
Diffstat (limited to 'src/string/memmem.c')
-rw-r--r-- | src/string/memmem.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/string/memmem.c b/src/string/memmem.c index a5a249f2..3b1ae183 100644 --- a/src/string/memmem.c +++ b/src/string/memmem.c @@ -120,7 +120,7 @@ static char *twoway_memmem(const unsigned char *h, const unsigned char *z, const } /* Compare left half */ for (k=ms+1; k>mem && n[k-1] == h[k-1]; k--); - if (k == mem) return (char *)h; + if (k <= mem) return (char *)h; h += p; mem = mem0; } |