Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Wed, 18 Jun 2014 21:06:42 -0400
From: Rich Felker <dalias@...c.org>
To: musl@...ts.openwall.com
Subject: Re: uninitialized memory access in memmem()

On Wed, Jun 18, 2014 at 06:20:33PM +0000, Clément Vasseur wrote:
> Hello,
> 
> I found a case where memmem() returns 0 where it should not:
> 
> $ cat test-memmem.c
> #define _GNU_SOURCE
> #include <string.h>
> #include <assert.h>
> 
> #define DATA 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10
> 
> int main(void)
> {
>     const unsigned char haystack[] = { DATA };
>     const unsigned char needle[] = { DATA };
>     assert(memmem(haystack, sizeof haystack, needle, sizeof needle));
> }
> 
> $ musl-gcc test-memmem.c && ./a.out
> Assertion failed: memmem(haystack, sizeof haystack, needle, sizeof needle) (test-memmem.c: main: 11)
> Aborted
> 
> Valgrind says a conditional jump or move depends on uninitalized value
> in twoway_memmem(). The code is quite complicated so I have not tried to
> track it down any further.

Can you provide more details? musl version? gcc version? arch? I can't
reproduce this error in master with gcc 4.7.3/i386.

Rich

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.