From 98aefe877280d62f42d8f02efd3fd7703a4683d4 Mon Sep 17 00:00:00 2001 From: Alejandro Colomar Date: Sun, 7 Jan 2024 01:37:04 +0100 Subject: lib/, src/: Rename some local variables 'endptr' is appropriate internally in strtol(3) because it's a pointer to 'end', and 'end' itself is a pointer to one-after-the-last character of the numeric string. In other words, endptr == &end However, naming the pointer whose address we pass to strtol(3)'s 'endptr' feels wrong, and causes me trouble while parsing the code; I need to double check the number of dereferences, because something feels wrong in my head. Signed-off-by: Alejandro Colomar --- lib/get_gid.c | 6 +++--- lib/get_pid.c | 19 ++++++++++--------- lib/get_uid.c | 6 +++--- lib/getgr_nam_gid.c | 6 +++--- lib/getrange.c | 18 +++++++++--------- lib/gettime.c | 12 ++++++------ lib/limits.c | 6 +++--- lib/prefix_flag.c | 10 +++++----- src/useradd.c | 6 +++--- 9 files changed, 45 insertions(+), 44 deletions(-) diff --git a/lib/get_gid.c b/lib/get_gid.c index 2c5030be..2420137b 100644 --- a/lib/get_gid.c +++ b/lib/get_gid.c @@ -16,13 +16,13 @@ int get_gid(const char *gidstr, gid_t *gid) { + char *end; long long val; - char *endptr; errno = 0; - val = strtoll(gidstr, &endptr, 10); + val = strtoll(gidstr, &end, 10); if ( ('\0' == *gidstr) - || ('\0' != *endptr) + || ('\0' != *end) || (0 != errno) || (/*@+longintegral@*/val != (gid_t)val)/*@=longintegral@*/) { return -1; diff --git a/lib/get_pid.c b/lib/get_pid.c index 61caa7aa..af3f2f8e 100644 --- a/lib/get_pid.c +++ b/lib/get_pid.c @@ -17,15 +17,16 @@ #include "string/sprintf.h" -int get_pid (const char *pidstr, pid_t *pid) +int +get_pid(const char *pidstr, pid_t *pid) { + char *end; long long val; - char *endptr; errno = 0; - val = strtoll(pidstr, &endptr, 10); + val = strtoll(pidstr, &end, 10); if ( ('\0' == *pidstr) - || ('\0' != *endptr) + || ('\0' != *end) || (0 != errno) || (val < 1) || (/*@+longintegral@*/val != (pid_t)val)/*@=longintegral@*/) { @@ -43,15 +44,15 @@ int get_pid (const char *pidstr, pid_t *pid) */ int get_pidfd_from_fd(const char *pidfdstr) { - long long val; - char *endptr; - struct stat st; + char *end; + long long val; + struct stat st; dev_t proc_st_dev, proc_st_rdev; errno = 0; - val = strtoll(pidfdstr, &endptr, 10); + val = strtoll(pidfdstr, &end, 10); if ( ('\0' == *pidfdstr) - || ('\0' != *endptr) + || ('\0' != *end) || (0 != errno) || (val < 0) || (/*@+longintegral@*/val != (int)val)/*@=longintegral@*/) { diff --git a/lib/get_uid.c b/lib/get_uid.c index d7169325..77fe9660 100644 --- a/lib/get_uid.c +++ b/lib/get_uid.c @@ -16,13 +16,13 @@ int get_uid(const char *uidstr, uid_t *uid) { + char *end; long long val; - char *endptr; errno = 0; - val = strtoll(uidstr, &endptr, 10); + val = strtoll(uidstr, &end, 10); if ( ('\0' == *uidstr) - || ('\0' != *endptr) + || ('\0' != *end) || (0 != errno) || (/*@+longintegral@*/val != (uid_t)val)/*@=longintegral@*/) { return -1; diff --git a/lib/getgr_nam_gid.c b/lib/getgr_nam_gid.c index 6d625979..fd0c2171 100644 --- a/lib/getgr_nam_gid.c +++ b/lib/getgr_nam_gid.c @@ -23,17 +23,17 @@ */ extern /*@only@*//*@null@*/struct group *getgr_nam_gid (/*@null@*/const char *grname) { + char *end; long long gid; - char *endptr; if (NULL == grname) { return NULL; } errno = 0; - gid = strtoll(grname, &endptr, 10); + gid = strtoll(grname, &end, 10); if ( ('\0' != *grname) - && ('\0' == *endptr) + && ('\0' == *end) && (0 == errno) && (/*@+longintegral@*/gid == (gid_t)gid)/*@=longintegral@*/) { return xgetgrgid (gid); diff --git a/lib/getrange.c b/lib/getrange.c index 8f7acee0..b2808557 100644 --- a/lib/getrange.c +++ b/lib/getrange.c @@ -30,7 +30,7 @@ getrange(const char *range, unsigned long *min, bool *has_min, unsigned long *max, bool *has_max) { - char *endptr; + char *end; if (NULL == range) return -1; @@ -39,32 +39,32 @@ getrange(const char *range, *has_max = false; if ('-' == range[0]) { - endptr = range + 1; + end = range + 1; goto parse_max; } errno = 0; - *min = strtoul_noneg(range, &endptr, 10); - if (endptr == range || 0 != errno) + *min = strtoul_noneg(range, &end, 10); + if (end == range || 0 != errno) return -1; *has_min = true; - switch (*endptr++) { + switch (*end++) { case '\0': *has_max = true; *max = *min; return 0; /* */ case '-': - if ('\0' == *endptr) + if ('\0' == *end) return 0; /* - */ parse_max: - if (!isdigit(*endptr)) + if (!isdigit(*end)) return -1; errno = 0; - *max = strtoul_noneg(endptr, &endptr, 10); - if ('\0' != *endptr || 0 != errno) + *max = strtoul_noneg(end, &end, 10); + if ('\0' != *end || 0 != errno) return -1; *has_max = true; diff --git a/lib/gettime.c b/lib/gettime.c index 19ebe4b3..f4ad3d79 100644 --- a/lib/gettime.c +++ b/lib/gettime.c @@ -26,7 +26,7 @@ */ /*@observer@*/time_t gettime (void) { - char *endptr; + char *end; char *source_date_epoch; time_t fallback; unsigned long long epoch; @@ -39,19 +39,19 @@ return fallback; errno = 0; - epoch = strtoull_noneg(source_date_epoch, &endptr, 10); + epoch = strtoull_noneg(source_date_epoch, &end, 10); if (errno != 0) { fprintf (shadow_logfd, _("Environment variable $SOURCE_DATE_EPOCH: strtoull: %s\n"), strerror(errno)); - } else if (endptr == source_date_epoch) { + } else if (end == source_date_epoch) { fprintf (shadow_logfd, _("Environment variable $SOURCE_DATE_EPOCH: No digits were found: %s\n"), - endptr); - } else if (*endptr != '\0') { + end); + } else if (*end != '\0') { fprintf (shadow_logfd, _("Environment variable $SOURCE_DATE_EPOCH: Trailing garbage: %s\n"), - endptr); + end); } else if (epoch > ULONG_MAX) { fprintf (shadow_logfd, _("Environment variable $SOURCE_DATE_EPOCH: value must be smaller than or equal to %lu but was found to be: %llu\n"), diff --git a/lib/limits.c b/lib/limits.c index 387a972b..813c0821 100644 --- a/lib/limits.c +++ b/lib/limits.c @@ -49,7 +49,7 @@ static int setrlimit_value (unsigned int resource, const char *value, unsigned int multiplier) { - char *endptr; + char *end; long l; rlim_t limit; struct rlimit rlim; @@ -67,9 +67,9 @@ static int setrlimit_value (unsigned int resource, * work with the limit string parser as is anyway) */ errno = 0; - l = strtol(value, &endptr, 10); + l = strtol(value, &end, 10); - if (value == endptr || errno != 0) + if (value == end || errno != 0) return 0; // FIXME: We could instead throw an error, though. if (__builtin_mul_overflow(l, multiplier, &limit)) { diff --git a/lib/prefix_flag.c b/lib/prefix_flag.c index d42657d5..bba7102b 100644 --- a/lib/prefix_flag.c +++ b/lib/prefix_flag.c @@ -334,9 +334,9 @@ extern void prefix_endgrent(void) extern struct group *prefix_getgr_nam_gid(const char *grname) { - long long gid; - char *endptr; - struct group *g; + char *end; + long long gid; + struct group *g; if (NULL == grname) { return NULL; @@ -346,9 +346,9 @@ extern struct group *prefix_getgr_nam_gid(const char *grname) return getgr_nam_gid(grname); errno = 0; - gid = strtoll(grname, &endptr, 10); + gid = strtoll(grname, &end, 10); if ( ('\0' != *grname) - && ('\0' == *endptr) + && ('\0' == *end) && (0 == errno) && (gid == (gid_t)gid)) { diff --git a/src/useradd.c b/src/useradd.c index ec21814c..88d8ab7f 100644 --- a/src/useradd.c +++ b/src/useradd.c @@ -857,14 +857,14 @@ static int get_groups (char *list) */ static struct group * get_local_group(char * grp_name) { + char *end; const struct group *grp; struct group *result_grp = NULL; long long gid; - char *endptr; - gid = strtoll (grp_name, &endptr, 10); + gid = strtoll(grp_name, &end, 10); if ( ('\0' != *grp_name) - && ('\0' == *endptr) + && ('\0' == *end) && (ERANGE != errno) && (gid == (gid_t)gid)) { grp = gr_locate_gid (gid); -- cgit v1.2.3