public inbox for cygwin-cvs@sourceware.org
help / color / mirror / Atom feed
* [newlib-cygwin/cygwin-3_5-branch] Cygwin: strptime: make sure to fail on invalid input digits
@ 2024-02-21 19:03 Corinna Vinschen
0 siblings, 0 replies; only message in thread
From: Corinna Vinschen @ 2024-02-21 19:03 UTC (permalink / raw)
To: cygwin-cvs
https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=f0ab27c0954e9529109e00c905be2d1ea88a749a
commit f0ab27c0954e9529109e00c905be2d1ea88a749a
Author: Corinna Vinschen <corinna@vinschen.de>
AuthorDate: Wed Feb 21 19:39:37 2024 +0100
Commit: Corinna Vinschen <corinna@vinschen.de>
CommitDate: Wed Feb 21 20:00:59 2024 +0100
Cygwin: strptime: make sure to fail on invalid input digits
conv_num returns NULL if the input is invalid, e. g., the
numbers are out of range. However, the code fails to test
this in a lot of places.
Rather than adding checks all over the place, rename conv_num
to __conv_num and create a wrapper macro conv_num to perform
the task of error checking.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
Diff:
---
winsup/cygwin/libc/strptime.cc | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/winsup/cygwin/libc/strptime.cc b/winsup/cygwin/libc/strptime.cc
index dc557231012d..353b8008a1c9 100644
--- a/winsup/cygwin/libc/strptime.cc
+++ b/winsup/cygwin/libc/strptime.cc
@@ -301,10 +301,19 @@ first_day (int year)
return ret;
}
-/* This simplifies the calls to conv_num enormously. */
+/* This simplifies the calls to __conv_num enormously. */
#define ALT_DIGITS ((alt_format & ALT_O) ? *alt_digits : NULL)
-static const unsigned char *conv_num(const unsigned char *, int *, uint, uint,
+#define conv_num(_b,_d,_l,_u,_a) \
+ ({ \
+ const unsigned char *_ret; \
+ _ret = __conv_num((_b),(_d),(_l),(_u),(_a)); \
+ if (!_ret) \
+ return NULL; \
+ _ret; \
+ })
+
+static const unsigned char *__conv_num(const unsigned char *, int *, uint, uint,
alt_digits_t *);
static const unsigned char *find_string(const unsigned char *, int *,
const char * const *,
@@ -842,7 +851,7 @@ strptime (const char *__restrict buf, const char *__restrict fmt,
}
static const unsigned char *
-conv_num(const unsigned char *buf, int *dest, uint llim, uint ulim,
+__conv_num(const unsigned char *buf, int *dest, uint llim, uint ulim,
alt_digits_t *alt_digits)
{
uint result = 0;
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2024-02-21 19:03 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-02-21 19:03 [newlib-cygwin/cygwin-3_5-branch] Cygwin: strptime: make sure to fail on invalid input digits Corinna Vinschen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).