diff options
-rw-r--r-- | archival/tar.c | 4 | ||||
-rw-r--r-- | coreutils/id.c | 6 | ||||
-rw-r--r-- | coreutils/ls.c | 4 | ||||
-rw-r--r-- | coreutils/whoami.c | 2 | ||||
-rw-r--r-- | include/libbb.h | 4 | ||||
-rw-r--r-- | libbb/my_getgrgid.c | 6 | ||||
-rw-r--r-- | libbb/my_getpwuid.c | 6 | ||||
-rw-r--r-- | libbb/procps.c | 2 | ||||
-rw-r--r-- | sysklogd/logger.c | 2 |
9 files changed, 18 insertions, 18 deletions
diff --git a/archival/tar.c b/archival/tar.c index 689dd14..950e21d 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) == NULL) + if (my_getpwuid(header.uname, statbuf->st_uid, sizeof(header.uname)) == NULL) strcpy(header.uname, "root"); - if (my_getgrgid(header.gname, statbuf->st_gid) == NULL) + if (my_getgrgid(header.gname, statbuf->st_gid, sizeof(header.gname)) == NULL) strcpy(header.gname, "root"); if (tbInfo->hlInfo) { diff --git a/coreutils/id.c b/coreutils/id.c index 602b26e..db8afc5 100644 --- a/coreutils/id.c +++ b/coreutils/id.c @@ -40,7 +40,7 @@ extern int id_main(int argc, char **argv) { - char user[9], group[9]; + char user[32], group[32]; long pwnam, grnam; int uid, gid; int flags; @@ -64,12 +64,12 @@ extern int id_main(int argc, char **argv) uid = geteuid(); gid = getegid(); } - my_getpwuid(user, uid); + my_getpwuid(user, uid, sizeof(user)); } else { safe_strncpy(user, argv[optind], sizeof(user)); gid = my_getpwnamegid(user); } - my_getgrgid(group, gid); + my_getgrgid(group, gid, sizeof(group)); pwnam=my_getpwnam(user); grnam=my_getgrnam(group); diff --git a/coreutils/ls.c b/coreutils/ls.c index a87f0ec..22685bc 100644 --- a/coreutils/ls.c +++ b/coreutils/ls.c @@ -683,9 +683,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); + my_getpwuid(scratch, dn->dstat.st_uid, sizeof(scratch)); printf("%-8.8s ", scratch); - my_getgrgid(scratch, dn->dstat.st_gid); + my_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 f93034d..e2a03b1 100644 --- a/coreutils/whoami.c +++ b/coreutils/whoami.c @@ -36,7 +36,7 @@ extern int whoami_main(int argc, char **argv) bb_show_usage(); uid = geteuid(); - if (my_getpwuid(user, uid)) { + if (my_getpwuid(user, uid, sizeof(user))) { puts(user); bb_fflush_stdout_and_exit(EXIT_SUCCESS); } diff --git a/include/libbb.h b/include/libbb.h index afbd020..78b9711 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -230,8 +230,8 @@ extern unsigned long bb_xparse_number(const char *numstr, * 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_getpwuid(char *name, long uid); -extern char * my_getgrgid(char *group, long gid); +extern char * my_getpwuid(char *name, long uid, int bufsize); +extern char * my_getgrgid(char *group, long gid, int bufsize); extern long my_getpwnamegid(const char *name); extern char *bb_askpass(int timeout, const char * prompt); diff --git a/libbb/my_getgrgid.c b/libbb/my_getgrgid.c index 907a474..e6b8776 100644 --- a/libbb/my_getgrgid.c +++ b/libbb/my_getgrgid.c @@ -27,16 +27,16 @@ /* gets a groupname given a gid */ -char * my_getgrgid(char *group, long gid) +char * my_getgrgid(char *group, long gid, int bufsize) { struct group *mygroup; mygroup = getgrgid(gid); if (mygroup==NULL) { - sprintf(group, "%ld", gid); + snprintf(group, bufsize, "%ld", gid); return NULL; } else { - return strcpy(group, mygroup->gr_name); + return safe_strncpy(group, mygroup->gr_name, bufsize); } } diff --git a/libbb/my_getpwuid.c b/libbb/my_getpwuid.c index 21a037f..53f6c77 100644 --- a/libbb/my_getpwuid.c +++ b/libbb/my_getpwuid.c @@ -28,16 +28,16 @@ /* gets a username given a uid */ -char * my_getpwuid(char *name, long uid) +char * my_getpwuid(char *name, long uid, int bufsize) { struct passwd *myuser; myuser = getpwuid(uid); if (myuser==NULL) { - sprintf(name, "%ld", (long)uid); + snprintf(name, bufsize, "%ld", (long)uid); return NULL; } else { - return strcpy(name, myuser->pw_name); + return safe_strncpy(name, myuser->pw_name, bufsize); } } diff --git a/libbb/procps.c b/libbb/procps.c index 46e9827..e405fb7 100644 --- a/libbb/procps.c +++ b/libbb/procps.c @@ -57,7 +57,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); + my_getpwuid(curstatus.user, sb.st_uid, sizeof(curstatus.user)); sprintf(status, "/proc/%d/stat", pid); if((fp = fopen(status, "r")) == NULL) diff --git a/sysklogd/logger.c b/sysklogd/logger.c index 981cef3..1615531 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()); + my_getpwuid(name, geteuid(), sizeof(name)); /* Parse any options */ while ((opt = getopt(argc, argv, "p:st:")) > 0) { |