diff options
Diffstat (limited to 'toolchain/musl/patches/053-fix-gratuitous-undefined-behavior-in-strptime.patch')
-rw-r--r-- | toolchain/musl/patches/053-fix-gratuitous-undefined-behavior-in-strptime.patch | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/toolchain/musl/patches/053-fix-gratuitous-undefined-behavior-in-strptime.patch b/toolchain/musl/patches/053-fix-gratuitous-undefined-behavior-in-strptime.patch new file mode 100644 index 0000000000..46920bccfb --- /dev/null +++ b/toolchain/musl/patches/053-fix-gratuitous-undefined-behavior-in-strptime.patch @@ -0,0 +1,33 @@ +From f33b17585058381491e6fda08f491b8e48c7980c Mon Sep 17 00:00:00 2001 +From: Rich Felker <dalias@aerifal.cx> +Date: Thu, 20 Oct 2016 13:22:20 -0400 +Subject: fix gratuitous undefined behavior in strptime + +accessing an object of type const char *restrict as if it had type +char * is not defined. +--- + src/time/strptime.c | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +diff --git a/src/time/strptime.c b/src/time/strptime.c +index f41f55f..55c7ed1 100644 +--- a/src/time/strptime.c ++++ b/src/time/strptime.c +@@ -22,8 +22,13 @@ char *strptime(const char *restrict s, const char *restrict f, struct tm *restri + } + f++; + if (*f == '+') f++; +- if (isdigit(*f)) w=strtoul(f, (void *)&f, 10); +- else w=-1; ++ if (isdigit(*f)) { ++ char *new_f; ++ w=strtoul(f, &new_f, 10); ++ f = new_f; ++ } else { ++ w=-1; ++ } + adj=0; + switch (*f++) { + case 'a': case 'A': +-- +cgit v0.11.2 |