From 45d4472c92c9f110964729d194ac84deac1caae8 Mon Sep 17 00:00:00 2001 From: Alejandro Colomar Date: Tue, 9 Jan 2024 20:00:03 +0100 Subject: [PATCH] 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 --- lib/getdef.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) 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); -- 2.47.3