From e385c1fa2b25a381c4492ae756f7dfd94373239a Mon Sep 17 00:00:00 2001 From: Peter Korsgaard Date: Tue, 21 Jan 2014 08:44:03 +0100 Subject: [PATCH] busybox: 1.22.1: add upstream date fix Signed-off-by: Peter Korsgaard --- .../1.22.1/0003-busybox-1.22.1-date.patch | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 package/busybox/1.22.1/0003-busybox-1.22.1-date.patch diff --git a/package/busybox/1.22.1/0003-busybox-1.22.1-date.patch b/package/busybox/1.22.1/0003-busybox-1.22.1-date.patch new file mode 100644 index 0000000000..6380d8781e --- /dev/null +++ b/package/busybox/1.22.1/0003-busybox-1.22.1-date.patch @@ -0,0 +1,30 @@ +--- busybox-1.22.1/libbb/time.c ++++ busybox-1.22.1-date/libbb/time.c +@@ -68,15 +68,23 @@ void FAST_FUNC parse_datestr(const char + /* else end != NUL and we error out */ + } + } else +- /* yyyy-mm-dd HH */ +- if (sscanf(date_str, "%u-%u-%u %u%c", &ptm->tm_year, ++ if (strchr(date_str, '-') ++ /* Why strchr('-') check? ++ * sscanf below will trash ptm->tm_year, this breaks ++ * if parse_str is "10101010" (iow, "MMddhhmm" form) ++ * because we destroy year. Do these sscanf ++ * only if we saw a dash in parse_str. ++ */ ++ /* yyyy-mm-dd HH */ ++ && (sscanf(date_str, "%u-%u-%u %u%c", &ptm->tm_year, + &ptm->tm_mon, &ptm->tm_mday, + &ptm->tm_hour, + &end) >= 4 +- /* yyyy-mm-dd */ +- || sscanf(date_str, "%u-%u-%u%c", &ptm->tm_year, ++ /* yyyy-mm-dd */ ++ || sscanf(date_str, "%u-%u-%u%c", &ptm->tm_year, + &ptm->tm_mon, &ptm->tm_mday, + &end) >= 3 ++ ) + ) { + ptm->tm_year -= 1900; /* Adjust years */ + ptm->tm_mon -= 1; /* Adjust month from 1-12 to 0-11 */ -- 2.30.2