aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--busybox.h6
-rw-r--r--chmod_chown_chgrp.c9
-rw-r--r--coreutils/id.c3
-rw-r--r--id.c3
-rw-r--r--include/busybox.h6
-rw-r--r--utility.c17
6 files changed, 16 insertions, 28 deletions
diff --git a/busybox.h b/busybox.h
index 8d4976a4b..53d22115a 100644
--- a/busybox.h
+++ b/busybox.h
@@ -175,11 +175,11 @@ extern unsigned long parse_number(const char *numstr,
175/* These parse entries in /etc/passwd and /etc/group. This is desirable 175/* These parse entries in /etc/passwd and /etc/group. This is desirable
176 * for BusyBox since we want to avoid using the glibc NSS stuff, which 176 * for BusyBox since we want to avoid using the glibc NSS stuff, which
177 * increases target size and is often not needed embedded systems. */ 177 * increases target size and is often not needed embedded systems. */
178extern long my_getpwnam(char *name); 178extern long my_getpwnam(const char *name);
179extern long my_getgrnam(char *name); 179extern long my_getgrnam(const char *name);
180extern void my_getpwuid(char *name, long uid); 180extern void my_getpwuid(char *name, long uid);
181extern void my_getgrgid(char *group, long gid); 181extern void my_getgrgid(char *group, long gid);
182extern long my_getpwnamegid(char *name); 182extern long my_getpwnamegid(const char *name);
183 183
184extern int device_open(char *device, int mode); 184extern int device_open(char *device, int mode);
185 185
diff --git a/chmod_chown_chgrp.c b/chmod_chown_chgrp.c
index a458cf77a..4fc986904 100644
--- a/chmod_chown_chgrp.c
+++ b/chmod_chown_chgrp.c
@@ -122,8 +122,6 @@ int chmod_chown_chgrp_main(int argc, char **argv)
122 gid = strtoul(groupName, &p, 10); /* maybe it's already numeric */ 122 gid = strtoul(groupName, &p, 10); /* maybe it's already numeric */
123 if (groupName == p) 123 if (groupName == p)
124 gid = my_getgrnam(groupName); 124 gid = my_getgrnam(groupName);
125 if (gid == -1)
126 goto bad_group;
127 } else { 125 } else {
128 groupName = strchr(*argv, '.'); 126 groupName = strchr(*argv, '.');
129 if (groupName == NULL) 127 if (groupName == NULL)
@@ -133,8 +131,6 @@ int chmod_chown_chgrp_main(int argc, char **argv)
133 gid = strtoul(groupName, &p, 10); 131 gid = strtoul(groupName, &p, 10);
134 if (groupName == p) 132 if (groupName == p)
135 gid = my_getgrnam(groupName); 133 gid = my_getgrnam(groupName);
136 if (gid == -1)
137 goto bad_group;
138 } else 134 } else
139 gid = -1; 135 gid = -1;
140 } 136 }
@@ -145,9 +141,6 @@ int chmod_chown_chgrp_main(int argc, char **argv)
145 uid = strtoul(*argv, &p, 10); /* if numeric ... */ 141 uid = strtoul(*argv, &p, 10); /* if numeric ... */
146 if (*argv == p) 142 if (*argv == p)
147 uid = my_getpwnam(*argv); 143 uid = my_getpwnam(*argv);
148 if (uid == -1) {
149 error_msg_and_die( "unknown user name: %s", *argv);
150 }
151 } 144 }
152 } 145 }
153 146
@@ -162,8 +155,6 @@ int chmod_chown_chgrp_main(int argc, char **argv)
162 } 155 }
163 return EXIT_SUCCESS; 156 return EXIT_SUCCESS;
164 157
165 bad_group:
166 error_msg_and_die( "unknown group name: %s", groupName);
167} 158}
168 159
169/* 160/*
diff --git a/coreutils/id.c b/coreutils/id.c
index 3667b32b2..3f90d55f6 100644
--- a/coreutils/id.c
+++ b/coreutils/id.c
@@ -76,9 +76,6 @@ extern int id_main(int argc, char **argv)
76 76
77 pwnam=my_getpwnam(user); 77 pwnam=my_getpwnam(user);
78 grnam=my_getgrnam(group); 78 grnam=my_getgrnam(group);
79 if (gid == -1 || pwnam==-1 || grnam==-1) {
80 error_msg_and_die("%s: No such user", user);
81 }
82 79
83 if (no_group) { 80 if (no_group) {
84 if(name_not_number && user) 81 if(name_not_number && user)
diff --git a/id.c b/id.c
index 3667b32b2..3f90d55f6 100644
--- a/id.c
+++ b/id.c
@@ -76,9 +76,6 @@ extern int id_main(int argc, char **argv)
76 76
77 pwnam=my_getpwnam(user); 77 pwnam=my_getpwnam(user);
78 grnam=my_getgrnam(group); 78 grnam=my_getgrnam(group);
79 if (gid == -1 || pwnam==-1 || grnam==-1) {
80 error_msg_and_die("%s: No such user", user);
81 }
82 79
83 if (no_group) { 80 if (no_group) {
84 if(name_not_number && user) 81 if(name_not_number && user)
diff --git a/include/busybox.h b/include/busybox.h
index 8d4976a4b..53d22115a 100644
--- a/include/busybox.h
+++ b/include/busybox.h
@@ -175,11 +175,11 @@ extern unsigned long parse_number(const char *numstr,
175/* These parse entries in /etc/passwd and /etc/group. This is desirable 175/* These parse entries in /etc/passwd and /etc/group. This is desirable
176 * for BusyBox since we want to avoid using the glibc NSS stuff, which 176 * for BusyBox since we want to avoid using the glibc NSS stuff, which
177 * increases target size and is often not needed embedded systems. */ 177 * increases target size and is often not needed embedded systems. */
178extern long my_getpwnam(char *name); 178extern long my_getpwnam(const char *name);
179extern long my_getgrnam(char *name); 179extern long my_getgrnam(const char *name);
180extern void my_getpwuid(char *name, long uid); 180extern void my_getpwuid(char *name, long uid);
181extern void my_getgrgid(char *group, long gid); 181extern void my_getgrgid(char *group, long gid);
182extern long my_getpwnamegid(char *name); 182extern long my_getpwnamegid(const char *name);
183 183
184extern int device_open(char *device, int mode); 184extern int device_open(char *device, int mode);
185 185
diff --git a/utility.c b/utility.c
index e3535966f..df4573c16 100644
--- a/utility.c
+++ b/utility.c
@@ -877,29 +877,32 @@ extern int parse_mode(const char *s, mode_t * theMode)
877#if defined BB_CHMOD_CHOWN_CHGRP || defined BB_PS || defined BB_LS \ 877#if defined BB_CHMOD_CHOWN_CHGRP || defined BB_PS || defined BB_LS \
878 || defined BB_TAR || defined BB_ID || defined BB_LOGGER \ 878 || defined BB_TAR || defined BB_ID || defined BB_LOGGER \
879 || defined BB_LOGNAME || defined BB_WHOAMI || defined BB_SH 879 || defined BB_LOGNAME || defined BB_WHOAMI || defined BB_SH
880
881#if defined BB_CHMOD_CHOWN_CHGRP || defined BB_ID
880/* returns a uid given a username */ 882/* returns a uid given a username */
881long my_getpwnam(char *name) 883long my_getpwnam(const char *name)
882{ 884{
883 struct passwd *myuser; 885 struct passwd *myuser;
884 886
885 myuser = getpwnam(name); 887 myuser = getpwnam(name);
886 if (myuser==NULL) 888 if (myuser==NULL)
887 return(-1); 889 error_msg_and_die("unknown user name: %s", name);
888 890
889 return myuser->pw_uid; 891 return myuser->pw_uid;
890} 892}
891 893
892/* returns a gid given a group name */ 894/* returns a gid given a group name */
893long my_getgrnam(char *name) 895long my_getgrnam(const char *name)
894{ 896{
895 struct group *mygroup; 897 struct group *mygroup;
896 898
897 mygroup = getgrnam(name); 899 mygroup = getgrnam(name);
898 if (mygroup==NULL) 900 if (mygroup==NULL)
899 return(-1); 901 error_msg_and_die("unknown group name: %s", name);
900 902
901 return (mygroup->gr_gid); 903 return (mygroup->gr_gid);
902} 904}
905#endif
903 906
904/* gets a username given a uid */ 907/* gets a username given a uid */
905void my_getpwuid(char *name, long uid) 908void my_getpwuid(char *name, long uid)
@@ -927,18 +930,18 @@ void my_getgrgid(char *group, long gid)
927 930
928#if defined BB_ID 931#if defined BB_ID
929/* gets a gid given a user name */ 932/* gets a gid given a user name */
930long my_getpwnamegid(char *name) 933long my_getpwnamegid(const char *name)
931{ 934{
932 struct group *mygroup; 935 struct group *mygroup;
933 struct passwd *myuser; 936 struct passwd *myuser;
934 937
935 myuser=getpwnam(name); 938 myuser=getpwnam(name);
936 if (myuser==NULL) 939 if (myuser==NULL)
937 error_msg_and_die( "unknown user name: %s", name); 940 error_msg_and_die("unknown user name: %s", name);
938 941
939 mygroup = getgrgid(myuser->pw_gid); 942 mygroup = getgrgid(myuser->pw_gid);
940 if (mygroup==NULL) 943 if (mygroup==NULL)
941 error_msg_and_die( "unknown gid %ld", (long)myuser->pw_gid); 944 error_msg_and_die("unknown gid %ld", (long)myuser->pw_gid);
942 945
943 return mygroup->gr_gid; 946 return mygroup->gr_gid;
944} 947}