diff --git a/archival/rpm.c b/archival/rpm.c index fa8db539a..9d16567bc 100644 --- a/archival/rpm.c +++ b/archival/rpm.c @@ -331,8 +331,8 @@ void fileaction_dobackup(char *filename, int fileref) void fileaction_setowngrp(char *filename, int fileref) { int uid, gid; - uid = my_getpwnam(rpm_getstring(RPMTAG_FILEUSERNAME, fileref)); - gid = my_getgrnam(rpm_getstring(RPMTAG_FILEGROUPNAME, fileref)); + uid = bb_xgetpwnam(rpm_getstring(RPMTAG_FILEUSERNAME, fileref)); + gid = bb_xgetgrnam(rpm_getstring(RPMTAG_FILEGROUPNAME, fileref)); chown (filename, uid, gid); } diff --git a/archival/tar.c b/archival/tar.c index a2623863d..7a82b441b 100644 --- a/archival/tar.c +++ b/archival/tar.c @@ -234,9 +234,9 @@ static inline int writeTarHeader(struct TarBallInfo *tbInfo, TAR_MAGIC_LEN + TAR_VERSION_LEN); /* Enter the user and group names (default to root if it fails) */ - if (my_getpwuid(header.uname, statbuf->st_uid, sizeof(header.uname)) == NULL) + if (bb_getpwuid(header.uname, statbuf->st_uid, sizeof(header.uname)) == NULL) strcpy(header.uname, "root"); - if (my_getgrgid(header.gname, statbuf->st_gid, sizeof(header.gname)) == NULL) + if (bb_getgrgid(header.gname, statbuf->st_gid, sizeof(header.gname)) == NULL) strcpy(header.gname, "root"); if (tbInfo->hlInfo) { diff --git a/coreutils/chgrp.c b/coreutils/chgrp.c index 8cfb54241..70ac672c2 100644 --- a/coreutils/chgrp.c +++ b/coreutils/chgrp.c @@ -58,7 +58,7 @@ int chgrp_main(int argc, char **argv) argv += optind; /* Find the selected group */ - gid = get_ug_id(*argv, my_getgrnam); + gid = get_ug_id(*argv, bb_xgetgrnam); ++argv; /* Ok, ready to do the deed now */ diff --git a/coreutils/chown.c b/coreutils/chown.c index 638745f17..daf77e294 100644 --- a/coreutils/chown.c +++ b/coreutils/chown.c @@ -77,11 +77,11 @@ int chown_main(int argc, char **argv) gid = -1; if (groupName) { *groupName++ = '\0'; - gid = get_ug_id(groupName, my_getgrnam); + gid = get_ug_id(groupName, bb_xgetgrnam); } /* Now check for the username */ - uid = get_ug_id(*argv, my_getpwnam); + uid = get_ug_id(*argv, bb_xgetpwnam); ++argv; diff --git a/coreutils/id.c b/coreutils/id.c index 03c6a6d2a..28050ddf2 100644 --- a/coreutils/id.c +++ b/coreutils/id.c @@ -80,8 +80,8 @@ extern int id_main(int argc, char **argv) if(argv[optind]) { p=getpwnam(argv[optind]); - /* my_getpwnam is needed because it exits on failure */ - uid = my_getpwnam(argv[optind]); + /* bb_xgetpwnam is needed because it exits on failure */ + uid = bb_xgetpwnam(argv[optind]); gid = p->pw_gid; /* in this case PRINT_REAL is the same */ } @@ -89,8 +89,8 @@ extern int id_main(int argc, char **argv) if(flags & (JUST_GROUP | JUST_USER)) { /* JUST_GROUP and JUST_USER are mutually exclusive */ if(flags & NAME_NOT_NUMBER) { - /* my_getpwuid and my_getgrgid exit on failure so puts cannot segfault */ - puts((flags & JUST_USER) ? my_getpwuid(NULL, uid, -1 ) : my_getgrgid(NULL, gid, -1 )); + /* bb_getpwuid and bb_getgrgid exit on failure so puts cannot segfault */ + puts((flags & JUST_USER) ? bb_getpwuid(NULL, uid, -1 ) : bb_getgrgid(NULL, gid, -1 )); } else { bb_printf("%u\n",(flags & JUST_USER) ? uid : gid); } @@ -99,11 +99,11 @@ extern int id_main(int argc, char **argv) } /* Print full info like GNU id */ - /* my_getpwuid doesn't exit on failure here */ - status=printf_full(uid, my_getpwuid(NULL, uid, 0), 'u'); + /* bb_getpwuid doesn't exit on failure here */ + status=printf_full(uid, bb_getpwuid(NULL, uid, 0), 'u'); putchar(' '); - /* my_getgrgid doesn't exit on failure here */ - status|=printf_full(gid, my_getgrgid(NULL, gid, 0), 'g'); + /* bb_getgrgid doesn't exit on failure here */ + status|=printf_full(gid, bb_getgrgid(NULL, gid, 0), 'g'); #ifdef CONFIG_SELINUX if ( is_selinux_enabled() ) { diff --git a/coreutils/install.c b/coreutils/install.c index 74e1d9acd..d0460412e 100644 --- a/coreutils/install.c +++ b/coreutils/install.c @@ -73,8 +73,8 @@ extern int install_main(int argc, char **argv) copy_flags |= FILEUTILS_PRESERVE_STATUS; } bb_parse_mode(mode_str, &mode); - gid = get_ug_id(gid_str, my_getgrnam); - uid = get_ug_id(uid_str, my_getpwnam); + gid = get_ug_id(gid_str, bb_xgetgrnam); + uid = get_ug_id(uid_str, bb_xgetpwnam); umask(0); /* Create directories diff --git a/coreutils/ls.c b/coreutils/ls.c index 4dfa9f507..d8d814a74 100644 --- a/coreutils/ls.c +++ b/coreutils/ls.c @@ -692,9 +692,9 @@ static int list_single(struct dnode *dn) break; case LIST_ID_NAME: #ifdef CONFIG_FEATURE_LS_USERNAME - my_getpwuid(scratch, dn->dstat.st_uid, sizeof(scratch)); + bb_getpwuid(scratch, dn->dstat.st_uid, sizeof(scratch)); printf("%-8.8s ", scratch); - my_getgrgid(scratch, dn->dstat.st_gid, sizeof(scratch)); + bb_getgrgid(scratch, dn->dstat.st_gid, sizeof(scratch)); printf("%-8.8s", scratch); column += 17; break; diff --git a/coreutils/whoami.c b/coreutils/whoami.c index 6a6e2eec9..16d28083c 100644 --- a/coreutils/whoami.c +++ b/coreutils/whoami.c @@ -32,7 +32,7 @@ extern int whoami_main(int argc, char **argv) if (argc > 1) bb_show_usage(); - puts(my_getpwuid(NULL, geteuid(), -1)); + puts(bb_getpwuid(NULL, geteuid(), -1)); /* exits on error */ bb_fflush_stdout_and_exit(EXIT_SUCCESS); } diff --git a/debianutils/start_stop_daemon.c b/debianutils/start_stop_daemon.c index b1ebe2fa7..f9310af8d 100644 --- a/debianutils/start_stop_daemon.c +++ b/debianutils/start_stop_daemon.c @@ -265,7 +265,7 @@ start_stop_daemon_main(int argc, char **argv) argv += optind; if (userspec && sscanf(userspec, "%d", &user_id) != 1) - user_id = my_getpwnam(userspec); + user_id = bb_xgetpwnam(userspec); if (opt & SSD_CTX_STOP) { do_stop(); diff --git a/include/libbb.h b/include/libbb.h index 3fb62e96b..b9794779d 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -221,16 +221,14 @@ extern unsigned long bb_xparse_number(const char *numstr, const struct suffix_mult *suffixes); -//#warning change names? - /* These parse entries in /etc/passwd and /etc/group. This is desirable * for BusyBox since we want to avoid using the glibc NSS stuff, which - * increases target size and is often not needed embedded systems. */ -extern long my_getpwnam(const char *name); -extern long my_getgrnam(const char *name); -extern char * my_getug(char *buffer, char *idname, long id, int bufsize, char prefix); -extern char * my_getpwuid(char *name, long uid, int bufsize); -extern char * my_getgrgid(char *group, long gid, int bufsize); + * increases target size and is often not needed on embedded systems. */ +extern long bb_xgetpwnam(const char *name); +extern long bb_xgetgrnam(const char *name); +extern char * bb_getug(char *buffer, char *idname, long id, int bufsize, char prefix); +extern char * bb_getpwuid(char *name, long uid, int bufsize); +extern char * bb_getgrgid(char *group, long gid, int bufsize); extern char *bb_askpass(int timeout, const char * prompt); extern int device_open(const char *device, int mode); @@ -471,7 +469,7 @@ extern void print_login_prompt(void); extern void vfork_daemon_rexec(int nochdir, int noclose, int argc, char **argv, char *foreground_opt); extern int get_terminal_width_height(int fd, int *width, int *height); -extern unsigned long get_ug_id(const char *s, long (*my_getxxnam)(const char *)); +extern unsigned long get_ug_id(const char *s, long (*__bb_getxxnam)(const char *)); #define HASH_SHA1 1 #define HASH_MD5 2 diff --git a/libbb/Makefile.in b/libbb/Makefile.in index dae3c1213..be5350754 100644 --- a/libbb/Makefile.in +++ b/libbb/Makefile.in @@ -28,13 +28,12 @@ LIBBB_SRC:= \ correct_password.c create_icmp_socket.c create_icmp6_socket.c \ device_open.c dump.c error_msg.c error_msg_and_die.c find_mount_point.c \ find_pid_by_name.c find_root_device.c fgets_str.c full_read.c \ - full_write.c get_last_path_component.c get_line_from_file.c get_ug_id.c \ + full_write.c get_last_path_component.c get_line_from_file.c \ hash_fd.c herror_msg.c herror_msg_and_die.c \ human_readable.c inet_common.c inode_hash.c interface.c isdirectory.c \ kernel_version.c last_char_is.c llist_add_to.c login.c loop.c \ make_directory.c mode_string.c mtab.c mtab_file.c \ - my_getgrgid.c my_getgrnam.c my_getpwnam.c my_getug.c\ - my_getpwuid.c obscure.c parse_mode.c parse_number.c perror_msg.c \ + obscure.c parse_mode.c parse_number.c perror_msg.c \ perror_msg_and_die.c print_file.c get_console.c \ process_escape_sequence.c procps.c pwd2spwd.c pw_encrypt.c qmodule.c \ read_package_field.c recursive_action.c remove_file.c \ @@ -75,18 +74,22 @@ LIBBB_MOBJ3:=xgetularg_bnd_sfx.o xgetlarg_bnd_sfx.o getlarg10_sfx.o \ LIBBB_MSRC4:=$(srcdir)/safe_strtol.c LIBBB_MOBJ4:=safe_strtoi.o safe_strtod.o safe_strtol.o safe_strtoul.o +LIBBB_MSRC5:=$(srcdir)/bb_pwd.c +LIBBB_MOBJ5:=bb_xgetpwnam.o bb_xgetgrnam.o bb_getgrgid.o bb_getpwuid.o \ + bb_getug.o get_ug_id.o + LIBBB_MOBJS0=$(patsubst %,$(LIBBB_DIR)%, $(LIBBB_MOBJ0)) LIBBB_MOBJS1=$(patsubst %,$(LIBBB_DIR)%, $(LIBBB_MOBJ1)) LIBBB_MOBJS2=$(patsubst %,$(LIBBB_DIR)%, $(LIBBB_MOBJ2)) LIBBB_MOBJS3=$(patsubst %,$(LIBBB_DIR)%, $(LIBBB_MOBJ3)) LIBBB_MOBJS4=$(patsubst %,$(LIBBB_DIR)%, $(LIBBB_MOBJ4)) +LIBBB_MOBJS5=$(patsubst %,$(LIBBB_DIR)%, $(LIBBB_MOBJ5)) libraries-y+=$(LIBBB_DIR)$(LIBBB_AR) $(LIBBB_DIR)$(LIBBB_AR): $(LIBBB_OBJS) $(LIBBB_MOBJS0) $(LIBBB_MOBJS1) \ - $(LIBBB_MOBJS2) $(LIBBB_MOBJS3) $(LIBBB_MOBJS4) - $(AR) $(ARFLAGS) $@ $(LIBBB_OBJS) $(LIBBB_MOBJS0) $(LIBBB_MOBJS1) \ - $(LIBBB_MOBJS2) $(LIBBB_MOBJS3) $(LIBBB_MOBJS4) + $(LIBBB_MOBJS2) $(LIBBB_MOBJS3) $(LIBBB_MOBJS4) $(LIBBB_MOBJS5) + $(AR) $(ARFLAGS) $(@) $(LIBBB_OBJS) $(^) $(LIBBB_DIR)%.o: $(srcdir)/%.c $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $< @@ -106,3 +109,6 @@ $(LIBBB_MOBJS3): $(LIBBB_MSRC3) $(LIBBB_MOBJS4): $(LIBBB_MSRC4) $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -c $< -o $@ +$(LIBBB_MOBJS5): $(LIBBB_MSRC5) + $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -c $< -o $@ + diff --git a/libbb/procps.c b/libbb/procps.c index 1e9d6869b..3e863b0de 100644 --- a/libbb/procps.c +++ b/libbb/procps.c @@ -53,7 +53,7 @@ extern procps_status_t * procps_scan(int save_user_arg0) sprintf(status, "/proc/%d", pid); if(stat(status, &sb)) continue; - my_getpwuid(curstatus.user, sb.st_uid, sizeof(curstatus.user)); + bb_getpwuid(curstatus.user, sb.st_uid, sizeof(curstatus.user)); sprintf(status, "/proc/%d/stat", pid); diff --git a/loginutils/adduser.c b/loginutils/adduser.c index 7fa05a013..eb9890168 100644 --- a/loginutils/adduser.c +++ b/loginutils/adduser.c @@ -305,7 +305,7 @@ int adduser_main(int argc, char **argv) if (usegroup) { /* Add user to a group that already exists */ - pw.pw_gid = my_getgrnam(usegroup); + pw.pw_gid = bb_xgetgrnam(usegroup); /* exits on error */ } diff --git a/loginutils/passwd.c b/loginutils/passwd.c index c8940eed7..5d8380d4c 100644 --- a/loginutils/passwd.c +++ b/loginutils/passwd.c @@ -168,7 +168,7 @@ extern int passwd_main(int argc, char **argv) bb_show_usage(); } } - myname = (char *) bb_xstrdup(my_getpwuid(NULL, getuid(), -1)); + myname = (char *) bb_xstrdup(bb_getpwuid(NULL, getuid(), -1)); /* exits on error */ if (optind < argc) { name = argv[optind]; diff --git a/miscutils/makedevs.c b/miscutils/makedevs.c index 8a407299a..e988400eb 100644 --- a/miscutils/makedevs.c +++ b/miscutils/makedevs.c @@ -160,12 +160,12 @@ extern int makedevs_main(int argc, char **argv) continue; } if (group) { - gid = get_ug_id(group, my_getgrnam); + gid = get_ug_id(group, bb_xgetgrnam); } else { gid = getgid(); } if (user) { - uid = get_ug_id(user, my_getpwnam); + uid = get_ug_id(user, bb_xgetpwnam); } else { uid = getuid(); } diff --git a/networking/httpd.c b/networking/httpd.c index 69c30bf0d..66d8bfe09 100644 --- a/networking/httpd.c +++ b/networking/httpd.c @@ -2050,7 +2050,7 @@ int httpd_main(int argc, char *argv[]) uid = strtol(s_uid, &e, 0); if(*e != '\0') { /* not integer */ - uid = my_getpwnam(s_uid); + uid = bb_xgetpwnam(s_uid); } } #endif diff --git a/sysklogd/logger.c b/sysklogd/logger.c index fee33b788..4e2e50f36 100644 --- a/sysklogd/logger.c +++ b/sysklogd/logger.c @@ -108,7 +108,7 @@ extern int logger_main(int argc, char **argv) char buf[1024], name[128]; /* Fill out the name string early (may be overwritten later) */ - my_getpwuid(name, geteuid(), sizeof(name)); + bb_getpwuid(name, geteuid(), sizeof(name)); /* Parse any options */ while ((opt = getopt(argc, argv, "p:st:")) > 0) {