diff --git a/lib/Makefile.am b/lib/Makefile.am index b5f601a6b..bcf859833 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -33,6 +33,8 @@ libshadow_la_SOURCES = \ alloc.h \ atoi/a2i.c \ atoi/a2i.h \ + atoi/getnum.c \ + atoi/getnum.h \ atoi/str2i.c \ atoi/str2i.h \ atoi/strtoi.c \ @@ -71,7 +73,6 @@ libshadow_la_SOURCES = \ find_new_sub_gids.c \ find_new_sub_uids.c \ fputsx.c \ - get_gid.c \ get_pid.c \ get_uid.c \ getdate.h \ diff --git a/lib/atoi/getnum.c b/lib/atoi/getnum.c new file mode 100644 index 000000000..77dd23123 --- /dev/null +++ b/lib/atoi/getnum.c @@ -0,0 +1,13 @@ +// SPDX-FileCopyrightText: 2009, Nicolas François +// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#include + +#include + +#include "atoi/getnum.h" + + +extern inline int get_gid(const char *restrict gidstr, gid_t *restrict gid); diff --git a/lib/get_gid.c b/lib/atoi/getnum.h similarity index 50% rename from lib/get_gid.c rename to lib/atoi/getnum.h index 6975792ec..c6f93b84b 100644 --- a/lib/get_gid.c +++ b/lib/atoi/getnum.h @@ -3,19 +3,29 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#ifndef SHADOW_INCLUDE_LIB_ATOI_GETNUM_H_ +#define SHADOW_INCLUDE_LIB_ATOI_GETNUM_H_ + -#ident "$Id$" +#include +#include #include -#include "prototypes.h" #include "atoi/a2i.h" +#include "attr.h" #include "typetraits.h" -int -get_gid(const char *gidstr, gid_t *gid) +ATTR_STRING(1) ATTR_ACCESS(write_only, 2) +inline int get_gid(const char *restrict gidstr, gid_t *restrict gid); + + +inline int +get_gid(const char *restrict gidstr, gid_t *restrict gid) { return a2i(gid_t, gid, gidstr, NULL, 10, type_min(gid_t), type_max(gid_t)); } + + +#endif // include guard diff --git a/lib/prototypes.h b/lib/prototypes.h index 91ff368b7..40e76625c 100644 --- a/lib/prototypes.h +++ b/lib/prototypes.h @@ -142,10 +142,6 @@ extern int find_new_sub_gids (gid_t *range_start, unsigned long *range_count); extern int find_new_sub_uids (uid_t *range_start, unsigned long *range_count); #endif /* ENABLE_SUBIDS */ - -/* get_gid.c */ -extern int get_gid (const char *gidstr, gid_t *gid); - /* getgr_nam_gid.c */ extern /*@only@*//*@null@*/struct group *getgr_nam_gid (/*@null@*/const char *grname); diff --git a/lib/sgetgrent.c b/lib/sgetgrent.c index 6cde15c3f..26ddf5c2a 100644 --- a/lib/sgetgrent.c +++ b/lib/sgetgrent.c @@ -17,9 +17,11 @@ #include #include "alloc.h" +#include "atoi/getnum.h" #include "defines.h" #include "prototypes.h" + #define NFIELDS 4 /* diff --git a/lib/sgetpwent.c b/lib/sgetpwent.c index 75c91770b..ad9ace3c5 100644 --- a/lib/sgetpwent.c +++ b/lib/sgetpwent.c @@ -16,10 +16,12 @@ #include #include +#include "atoi/getnum.h" #include "defines.h" #include "prototypes.h" #include "shadowlog_internal.h" + #define NFIELDS 7 /* diff --git a/libsubid/api.c b/libsubid/api.c index 76a9eec4d..feed2f7c2 100644 --- a/libsubid/api.c +++ b/libsubid/api.c @@ -12,11 +12,13 @@ #include #include #include + #include "subordinateio.h" #include "idmapping.h" #include "subid.h" #include "shadowlog.h" + bool subid_init(const char *progname, FILE * logfd) { FILE *shadow_logfd; diff --git a/po/POTFILES.in b/po/POTFILES.in index 6d2c0521c..9ebbc017b 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -22,7 +22,6 @@ lib/find_new_sub_gids.c lib/find_new_sub_uids.c lib/find_new_uid.c lib/fputsx.c -lib/get_gid.c lib/get_uid.c lib/getdef.c lib/getgr_nam_gid.c diff --git a/src/groupadd.c b/src/groupadd.c index 46e6550ae..095a41eed 100644 --- a/src/groupadd.c +++ b/src/groupadd.c @@ -23,6 +23,8 @@ #include #endif /* USE_PAM */ #endif /* ACCT_TOOLS_SETUID */ + +#include "atoi/getnum.h" #include "chkname.h" #include "defines.h" #include "getdef.h" @@ -37,6 +39,7 @@ #include "shadowlog.h" #include "run_part.h" + /* * exit status values */ diff --git a/src/groupmod.c b/src/groupmod.c index 989d7ea34..d7aaf6660 100644 --- a/src/groupmod.c +++ b/src/groupmod.c @@ -27,6 +27,7 @@ #endif /* ACCT_TOOLS_SETUID */ #include "alloc.h" +#include "atoi/getnum.h" #include "chkname.h" #include "defines.h" #include "groupio.h" @@ -40,6 +41,8 @@ #include "shadowlog.h" #include "string/stpecpy.h" #include "string/stpeprintf.h" + + /* * exit status values */ diff --git a/src/newusers.c b/src/newusers.c index 0705b5797..47a587ec0 100644 --- a/src/newusers.c +++ b/src/newusers.c @@ -31,6 +31,7 @@ #include #include "alloc.h" +#include "atoi/getnum.h" #include "atoi/str2i.h" #ifdef ACCT_TOOLS_SETUID #ifdef USE_PAM