Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date: Wed, 18 Jun 2014 18:20:33 +0000 (UTC)
From: Clément Vasseur <clement.vasseur@...il.com>
To: musl@...ts.openwall.com
Subject: uninitialized memory access in memmem()

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.

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.