From f473dc4bacab161195e119d8642b136e050c41c2 Mon Sep 17 00:00:00 2001 From: Jihwan Kim Date: Mon, 28 Mar 2022 11:48:30 +0900 Subject: [PATCH 1/2] Fix invalid date parsing --- ext/standard/ftp_fopen_wrapper.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/standard/ftp_fopen_wrapper.c b/ext/standard/ftp_fopen_wrapper.c index f20f4245bd469..0ab03cc02c509 100644 --- a/ext/standard/ftp_fopen_wrapper.c +++ b/ext/standard/ftp_fopen_wrapper.c @@ -834,7 +834,7 @@ static int php_stream_ftp_url_stat(php_stream_wrapper *wrapper, const char *url, goto mdtm_error; } - n = sscanf(p, "%4d%2d%2d%2d%2d%2d", &tm.tm_year, &tm.tm_mon, &tm.tm_mday, &tm.tm_hour, &tm.tm_min, &tm.tm_sec); + n = sscanf(p, "%4u%2u%2u%2u%2u%2u", &tm.tm_year, &tm.tm_mon, &tm.tm_mday, &tm.tm_hour, &tm.tm_min, &tm.tm_sec); if (n != 6) { goto mdtm_error; } From cdda26e05f0cf02f5ad7e6772654eb96dfa0d275 Mon Sep 17 00:00:00 2001 From: mdsnins Date: Sat, 2 Apr 2022 20:15:20 +0900 Subject: [PATCH 2/2] Fix datetime format string to follow POSIX spec --- ext/ftp/ftp.c | 2 +- ext/standard/ftp_fopen_wrapper.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ext/ftp/ftp.c b/ext/ftp/ftp.c index ef91fdec97988..1af4f13c65af0 100644 --- a/ext/ftp/ftp.c +++ b/ext/ftp/ftp.c @@ -1145,7 +1145,7 @@ ftp_mdtm(ftpbuf_t *ftp, const char *path, const size_t path_len) } /* parse out the timestamp */ for (ptr = ftp->inbuf; *ptr && !isdigit(*ptr); ptr++); - n = sscanf(ptr, "%4u%2u%2u%2u%2u%2u", &tm.tm_year, &tm.tm_mon, &tm.tm_mday, &tm.tm_hour, &tm.tm_min, &tm.tm_sec); + n = sscanf(ptr, "%4d%2d%2d%2d%2d%2d", &tm.tm_year, &tm.tm_mon, &tm.tm_mday, &tm.tm_hour, &tm.tm_min, &tm.tm_sec); if (n != 6) { return -1; } diff --git a/ext/standard/ftp_fopen_wrapper.c b/ext/standard/ftp_fopen_wrapper.c index 0ab03cc02c509..f20f4245bd469 100644 --- a/ext/standard/ftp_fopen_wrapper.c +++ b/ext/standard/ftp_fopen_wrapper.c @@ -834,7 +834,7 @@ static int php_stream_ftp_url_stat(php_stream_wrapper *wrapper, const char *url, goto mdtm_error; } - n = sscanf(p, "%4u%2u%2u%2u%2u%2u", &tm.tm_year, &tm.tm_mon, &tm.tm_mday, &tm.tm_hour, &tm.tm_min, &tm.tm_sec); + n = sscanf(p, "%4d%2d%2d%2d%2d%2d", &tm.tm_year, &tm.tm_mon, &tm.tm_mday, &tm.tm_hour, &tm.tm_min, &tm.tm_sec); if (n != 6) { goto mdtm_error; }