From 2a9b6d80e79a6e3eaba094efa07b3620c880f77f Mon Sep 17 00:00:00 2001 From: Alejandro Colomar Date: Fri, 1 Dec 2023 20:33:20 +0100 Subject: [PATCH] lib/, src/: getulong(): Use the usual -1 as an error code Signed-off-by: Alejandro Colomar --- lib/getdef.c | 2 +- lib/getulong.c | 21 +++++++++------------ lib/idmapping.c | 6 +++--- lib/limits.c | 6 +++--- lib/rlogin.c | 2 +- lib/sgetspent.c | 2 +- lib/shadow.c | 2 +- lib/subordinateio.c | 4 ++-- src/lastlog.c | 4 ++-- 9 files changed, 23 insertions(+), 26 deletions(-) diff --git a/lib/getdef.c b/lib/getdef.c index 99f8ea5d6..4d4d4e194 100644 --- a/lib/getdef.c +++ b/lib/getdef.c @@ -347,7 +347,7 @@ unsigned long getdef_ulong (const char *item, unsigned long dflt) return dflt; } - if (getulong (d->value, &val) == 0) { + if (getulong(d->value, &val) == -1) { fprintf (shadow_logfd, _("configuration error - cannot parse %s value: '%s'"), item, d->value); diff --git a/lib/getulong.c b/lib/getulong.c index 03d35bf83..613c657b4 100644 --- a/lib/getulong.c +++ b/lib/getulong.c @@ -4,36 +4,33 @@ * SPDX-License-Identifier: BSD-3-Clause */ + #include #ident "$Id: getlong.c 2763 2009-04-23 09:57:03Z nekral-guest $" #include #include + #include "prototypes.h" + /* * getulong - extract an unsigned long integer provided by the numstr string in *result * * It supports decimal, hexadecimal or octal representations. - * - * Returns 0 on failure, 1 on success. */ -int getulong (const char *numstr, /*@out@*/unsigned long *result) +int +getulong(const char *numstr, /*@out@*/unsigned long *result) { + char *endptr; unsigned long val; - char *endptr; errno = 0; val = strtoul(numstr, &endptr, 0); - if ( ('\0' == *numstr) - || ('\0' != *endptr) - || (0 != errno) - ) { - return 0; - } + if (('\0' == *numstr) || ('\0' != *endptr) || (0 != errno)) + return -1; *result = val; - return 1; + return 0; } - diff --git a/lib/idmapping.c b/lib/idmapping.c index 83ab745bf..7454c3d81 100644 --- a/lib/idmapping.c +++ b/lib/idmapping.c @@ -58,15 +58,15 @@ struct map_range *get_map_ranges(int ranges, int argc, char **argv) /* Gather up the ranges from the command line */ mapping = mappings; for (idx = 0, argidx = 0; idx < ranges; idx++, argidx += 3, mapping++) { - if (!getulong(argv[argidx + 0], &mapping->upper)) { + if (getulong(argv[argidx + 0], &mapping->upper) == -1) { free(mappings); return NULL; } - if (!getulong(argv[argidx + 1], &mapping->lower)) { + if (getulong(argv[argidx + 1], &mapping->lower) == -1) { free(mappings); return NULL; } - if (!getulong(argv[argidx + 2], &mapping->count)) { + if (getulong(argv[argidx + 2], &mapping->count) == -1) { free(mappings); return NULL; } diff --git a/lib/limits.c b/lib/limits.c index 9c6f1d9a9..37a1676c6 100644 --- a/lib/limits.c +++ b/lib/limits.c @@ -104,7 +104,7 @@ static int set_umask (const char *value) { unsigned long mask; - if ( (getulong (value, &mask) == 0) + if ( (getulong(value, &mask) == -1) || (mask != (mode_t) mask)) { return 0; } @@ -119,7 +119,7 @@ static int check_logins (const char *name, const char *maxlogins) { unsigned long limit, count; - if (getulong (maxlogins, &limit) == 0) { + if (getulong(maxlogins, &limit) == -1) { return 0; } @@ -512,7 +512,7 @@ void setup_limits (const struct passwd *info) if (strncmp (cp, "umask=", 6) == 0) { unsigned long mask; - if ( (getulong (cp + 6, &mask) == 0) + if ( (getulong(cp + 6, &mask) == -1) || (mask != (mode_t) mask)) { SYSLOG ((LOG_WARN, "Can't set umask value for user %s", diff --git a/lib/rlogin.c b/lib/rlogin.c index 686f68546..0a48668da 100644 --- a/lib/rlogin.c +++ b/lib/rlogin.c @@ -78,7 +78,7 @@ do_rlogin (const char *remote_host, char *name, size_t namelen, char *term, *cp = '\0'; cp++; - if (getulong (cp, &remote_speed) == 0) { + if (getulong(cp, &remote_speed) == -1) { remote_speed = 9600; } } diff --git a/lib/sgetspent.c b/lib/sgetspent.c index 128175421..184fbc16d 100644 --- a/lib/sgetspent.c +++ b/lib/sgetspent.c @@ -175,7 +175,7 @@ struct spwd *sgetspent (const char *string) if (fields[8][0] == '\0') { spwd.sp_flag = SHADOW_SP_FLAG_UNSET; - } else if (getulong (fields[8], &spwd.sp_flag) == 0) { + } else if (getulong(fields[8], &spwd.sp_flag) == -1) { return 0; } diff --git a/lib/shadow.c b/lib/shadow.c index fca077a9e..dac140715 100644 --- a/lib/shadow.c +++ b/lib/shadow.c @@ -305,7 +305,7 @@ static struct spwd *my_sgetspent (const char *string) if (fields[8][0] == '\0') { spwd.sp_flag = SHADOW_SP_FLAG_UNSET; } else { - if (getulong (fields[8], &spwd.sp_flag) == 0) { + if (getulong(fields[8], &spwd.sp_flag) == -1) { #ifdef USE_NIS if (nis_used) { spwd.sp_flag = SHADOW_SP_FLAG_UNSET; diff --git a/lib/subordinateio.c b/lib/subordinateio.c index c8b25e3e2..d67d56c91 100644 --- a/lib/subordinateio.c +++ b/lib/subordinateio.c @@ -115,9 +115,9 @@ static void *subordinate_parse (const char *line) if (i != SUBID_NFIELDS || *fields[0] == '\0' || *fields[1] == '\0' || *fields[2] == '\0') return NULL; range.owner = fields[0]; - if (getulong (fields[1], &range.start) == 0) + if (getulong(fields[1], &range.start) == -1) return NULL; - if (getulong (fields[2], &range.count) == 0) + if (getulong(fields[2], &range.count) == -1) return NULL; return ⦥ diff --git a/src/lastlog.c b/src/lastlog.c index f96a520c2..e6f38ea76 100644 --- a/src/lastlog.c +++ b/src/lastlog.c @@ -324,7 +324,7 @@ int main (int argc, char **argv) case 'b': { unsigned long inverse_days; - if (getulong (optarg, &inverse_days) == 0) { + if (getulong(optarg, &inverse_days) == -1) { fprintf (stderr, _("%s: invalid numeric argument '%s'\n"), Prog, optarg); @@ -352,7 +352,7 @@ int main (int argc, char **argv) case 't': { unsigned long days; - if (getulong (optarg, &days) == 0) { + if (getulong(optarg, &days) == -1) { fprintf (stderr, _("%s: invalid numeric argument '%s'\n"), Prog, optarg); -- 2.47.2