From: Alejandro Colomar Date: Tue, 9 Jan 2024 19:00:03 +0000 (+0100) Subject: lib/getdef.c: getdef_unum(): Fix wrong limit check X-Git-Tag: 4.17.0-rc1~166 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=45d4472c92c9f110964729d194ac84deac1caae8;p=thirdparty%2Fshadow.git lib/getdef.c: getdef_unum(): Fix wrong limit check The limit, since it's an unsigned int, should have been UINT_MAX, not INT_MAX. By calling a2ui() we can fix that and simplify too. Reviewed-by: "Serge E. Hallyn" Signed-off-by: Alejandro Colomar --- diff --git a/lib/getdef.c b/lib/getdef.c index 624a05662..5475b40e0 100644 --- a/lib/getdef.c +++ b/lib/getdef.c @@ -268,10 +268,11 @@ getdef_num(const char *item, int dflt) * values are handled. */ -unsigned int getdef_unum (const char *item, unsigned int dflt) +unsigned int +getdef_unum(const char *item, unsigned int dflt) { - struct itemdef *d; - long val; + unsigned int val; + struct itemdef *d; if (!def_loaded) { def_load (); @@ -282,9 +283,7 @@ unsigned int getdef_unum (const char *item, unsigned int dflt) return dflt; } - if ( (str2sl(&val, d->value) == -1) - || (val < 0) - || (val > INT_MAX)) { + if (a2ui(&val, d->value, NULL, 0, 0, UINT_MAX) == -1) { fprintf (shadow_logfd, _("configuration error - cannot parse %s value: '%s'"), item, d->value);