import glibc-2.17-292.el7.src.rpm
Signed-off-by: zhangbinchen <zhangbinchen@openanolis.org>
This commit is contained in:
commit
ff0128648f
929 changed files with 436800 additions and 0 deletions
96
glibc-rh977875.patch
Normal file
96
glibc-rh977875.patch
Normal file
|
@ -0,0 +1,96 @@
|
|||
commit abe7f530bf5c741fe6f0658da7be59d8db168f7f
|
||||
Author: Siddhesh Poyarekar <siddhesh@redhat.com>
|
||||
Date: Wed Apr 10 11:31:46 2013 +0530
|
||||
|
||||
Accept leading and trailing spaces in getdate input string
|
||||
|
||||
Fixes #15346.
|
||||
|
||||
The POSIX description of getdate allows for extra spaces in the
|
||||
getdate input string. __getdate_r uses strptime internally, which
|
||||
works fine with extra spaces between format strings (and hence within
|
||||
an input string) but not with leading and trailing spaces. So we trim
|
||||
off the leading and trailing spaces before we pass it on to strptime.
|
||||
|
||||
diff --git glibc-2.17-c758a686/time/getdate.c glibc-2.17-c758a686/time/getdate.c
|
||||
index 637dd18..eadebc3 100644
|
||||
--- glibc-2.17-c758a686/time/getdate.c
|
||||
+++ glibc-2.17-c758a686/time/getdate.c
|
||||
@@ -25,6 +25,8 @@
|
||||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/stat.h>
|
||||
+#include <ctype.h>
|
||||
+#include <alloca.h>
|
||||
|
||||
#define TM_YEAR_BASE 1900
|
||||
|
||||
@@ -135,6 +137,44 @@ __getdate_r (const char *string, struct tm *tp)
|
||||
/* No threads reading this stream. */
|
||||
__fsetlocking (fp, FSETLOCKING_BYCALLER);
|
||||
|
||||
+ /* Skip leading whitespace. */
|
||||
+ while (isspace (*string))
|
||||
+ string++;
|
||||
+
|
||||
+ size_t inlen, oldlen;
|
||||
+
|
||||
+ oldlen = inlen = strlen (string);
|
||||
+
|
||||
+ /* Skip trailing whitespace. */
|
||||
+ while (inlen > 0 && isspace (string[inlen - 1]))
|
||||
+ inlen--;
|
||||
+
|
||||
+ char *instr = NULL;
|
||||
+
|
||||
+ if (inlen < oldlen)
|
||||
+ {
|
||||
+ bool using_malloc = false;
|
||||
+
|
||||
+ if (__libc_use_alloca (inlen + 1))
|
||||
+ instr = alloca (inlen + 1);
|
||||
+ else
|
||||
+ {
|
||||
+ instr = malloc (inlen + 1);
|
||||
+ if (instr == NULL)
|
||||
+ {
|
||||
+ fclose (fp);
|
||||
+ return 6;
|
||||
+ }
|
||||
+ using_malloc = true;
|
||||
+ }
|
||||
+ memcpy (instr, string, inlen);
|
||||
+ instr[inlen] = '\0';
|
||||
+ string = instr;
|
||||
+
|
||||
+ if (!using_malloc)
|
||||
+ instr = NULL;
|
||||
+ }
|
||||
+
|
||||
line = NULL;
|
||||
len = 0;
|
||||
do
|
||||
@@ -159,6 +199,8 @@ __getdate_r (const char *string, struct tm *tp)
|
||||
}
|
||||
while (!feof_unlocked (fp));
|
||||
|
||||
+ free (instr);
|
||||
+
|
||||
/* Free the buffer. */
|
||||
free (line);
|
||||
|
||||
diff --git glibc-2.17-c758a686/time/tst-getdate.c glibc-2.17-c758a686/time/tst-getdate.c
|
||||
index 7604e83..dc8ecf4 100644
|
||||
--- glibc-2.17-c758a686/time/tst-getdate.c
|
||||
+++ glibc-2.17-c758a686/time/tst-getdate.c
|
||||
@@ -31,6 +31,10 @@ static const struct
|
||||
} tests [] =
|
||||
{
|
||||
{"21:01:10 1999-1-31", "Universal", 0, {10, 1, 21, 31, 0, 99, 0, 0, 0}},
|
||||
+ {"21:01:10 1999-1-31", "Universal", 0, {10, 1, 21, 31, 0, 99, 0, 0, 0}},
|
||||
+ {" 21:01:10 1999-1-31", "Universal", 0, {10, 1, 21, 31, 0, 99, 0, 0, 0}},
|
||||
+ {"21:01:10 1999-1-31 ", "Universal", 0, {10, 1, 21, 31, 0, 99, 0, 0, 0}},
|
||||
+ {" 21:01:10 1999-1-31 ", "Universal", 0, {10, 1, 21, 31, 0, 99, 0, 0, 0}},
|
||||
{"21:01:10 1999-2-28", "Universal", 0, {10, 1, 21, 28, 1, 99, 0, 0, 0}},
|
||||
{"16:30:46 2000-2-29", "Universal", 0, {46, 30,16, 29, 1, 100, 0, 0, 0}},
|
||||
{"01-08-2000 05:06:07", "Europe/Berlin", 0, {7, 6, 5, 1, 7, 100, 0, 0, 0}}
|
Loading…
Add table
Add a link
Reference in a new issue