This is the mail archive of the
glibc-bugs@sourceware.org
mailing list for the glibc project.
[Bug libc/16640] New: string/strtok.c: undefined behaviour inconsistent between x86 and other generic code
- From: "kyle at redhat dot com" <sourceware-bugzilla at sourceware dot org>
- To: glibc-bugs at sourceware dot org
- Date: Wed, 26 Feb 2014 20:35:29 +0000
- Subject: [Bug libc/16640] New: string/strtok.c: undefined behaviour inconsistent between x86 and other generic code
- Auto-submitted: auto-generated
https://sourceware.org/bugzilla/show_bug.cgi?id=16640
Bug ID: 16640
Summary: string/strtok.c: undefined behaviour inconsistent
between x86 and other generic code
Product: glibc
Version: unspecified
Status: NEW
Severity: minor
Priority: P2
Component: libc
Assignee: unassigned at sourceware dot org
Reporter: kyle at redhat dot com
CC: drepper.fsp at gmail dot com
Created attachment 7444
--> https://sourceware.org/bugzilla/attachment.cgi?id=7444&action=edit
make string/strtok match x86
The strtok.S implementations for x86_64 and i386 vary from the generic
string/strtok.c version. In the former case, if str == NULL, and the saved
string is also NULL, the strtok call returns NULL.
In contrast, the string/strtok.c call proceeds to pass s = olds = NULL to
strspn which consequently crashes.
While this behaviour is probably permissible, it results in odd portability
issues where the behaviour can't be reproduced on x86_64. As well, the generic
versions in the BSD libc I looked at (which appears to date back to 4.3BSD or
earlier...) also checks for the (s = olds) == NULL condition and handles it, so
we have a bit of precedent here.
Attached is a patch which brings the generic string/strtok.c in-line with i386,
x86_64 and BSD. It seems better to do that, rather than suddenly make working
code SIGSEGV on x86_64...
regards, Kyle
--
You are receiving this mail because:
You are on the CC list for the bug.