mirror of
https://github.com/sheumann/hush.git
synced 2024-12-22 14:30:31 +00:00
Patch from Vladimir N. Oleynik to save 128 bytes by moving error
checking for some my_* functions to utility.c
This commit is contained in:
parent
e677dfedd1
commit
4142d4dc66
@ -175,11 +175,11 @@ extern unsigned long parse_number(const char *numstr,
|
|||||||
/* These parse entries in /etc/passwd and /etc/group. This is desirable
|
/* 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
|
* for BusyBox since we want to avoid using the glibc NSS stuff, which
|
||||||
* increases target size and is often not needed embedded systems. */
|
* increases target size and is often not needed embedded systems. */
|
||||||
extern long my_getpwnam(char *name);
|
extern long my_getpwnam(const char *name);
|
||||||
extern long my_getgrnam(char *name);
|
extern long my_getgrnam(const char *name);
|
||||||
extern void my_getpwuid(char *name, long uid);
|
extern void my_getpwuid(char *name, long uid);
|
||||||
extern void my_getgrgid(char *group, long gid);
|
extern void my_getgrgid(char *group, long gid);
|
||||||
extern long my_getpwnamegid(char *name);
|
extern long my_getpwnamegid(const char *name);
|
||||||
|
|
||||||
extern int device_open(char *device, int mode);
|
extern int device_open(char *device, int mode);
|
||||||
|
|
||||||
|
@ -122,8 +122,6 @@ int chmod_chown_chgrp_main(int argc, char **argv)
|
|||||||
gid = strtoul(groupName, &p, 10); /* maybe it's already numeric */
|
gid = strtoul(groupName, &p, 10); /* maybe it's already numeric */
|
||||||
if (groupName == p)
|
if (groupName == p)
|
||||||
gid = my_getgrnam(groupName);
|
gid = my_getgrnam(groupName);
|
||||||
if (gid == -1)
|
|
||||||
goto bad_group;
|
|
||||||
} else {
|
} else {
|
||||||
groupName = strchr(*argv, '.');
|
groupName = strchr(*argv, '.');
|
||||||
if (groupName == NULL)
|
if (groupName == NULL)
|
||||||
@ -133,8 +131,6 @@ int chmod_chown_chgrp_main(int argc, char **argv)
|
|||||||
gid = strtoul(groupName, &p, 10);
|
gid = strtoul(groupName, &p, 10);
|
||||||
if (groupName == p)
|
if (groupName == p)
|
||||||
gid = my_getgrnam(groupName);
|
gid = my_getgrnam(groupName);
|
||||||
if (gid == -1)
|
|
||||||
goto bad_group;
|
|
||||||
} else
|
} else
|
||||||
gid = -1;
|
gid = -1;
|
||||||
}
|
}
|
||||||
@ -145,9 +141,6 @@ int chmod_chown_chgrp_main(int argc, char **argv)
|
|||||||
uid = strtoul(*argv, &p, 10); /* if numeric ... */
|
uid = strtoul(*argv, &p, 10); /* if numeric ... */
|
||||||
if (*argv == p)
|
if (*argv == p)
|
||||||
uid = my_getpwnam(*argv);
|
uid = my_getpwnam(*argv);
|
||||||
if (uid == -1) {
|
|
||||||
error_msg_and_die( "unknown user name: %s", *argv);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -162,8 +155,6 @@ int chmod_chown_chgrp_main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
|
|
||||||
bad_group:
|
|
||||||
error_msg_and_die( "unknown group name: %s", groupName);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -76,9 +76,6 @@ extern int id_main(int argc, char **argv)
|
|||||||
|
|
||||||
pwnam=my_getpwnam(user);
|
pwnam=my_getpwnam(user);
|
||||||
grnam=my_getgrnam(group);
|
grnam=my_getgrnam(group);
|
||||||
if (gid == -1 || pwnam==-1 || grnam==-1) {
|
|
||||||
error_msg_and_die("%s: No such user", user);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (no_group) {
|
if (no_group) {
|
||||||
if(name_not_number && user)
|
if(name_not_number && user)
|
||||||
|
3
id.c
3
id.c
@ -76,9 +76,6 @@ extern int id_main(int argc, char **argv)
|
|||||||
|
|
||||||
pwnam=my_getpwnam(user);
|
pwnam=my_getpwnam(user);
|
||||||
grnam=my_getgrnam(group);
|
grnam=my_getgrnam(group);
|
||||||
if (gid == -1 || pwnam==-1 || grnam==-1) {
|
|
||||||
error_msg_and_die("%s: No such user", user);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (no_group) {
|
if (no_group) {
|
||||||
if(name_not_number && user)
|
if(name_not_number && user)
|
||||||
|
@ -175,11 +175,11 @@ extern unsigned long parse_number(const char *numstr,
|
|||||||
/* These parse entries in /etc/passwd and /etc/group. This is desirable
|
/* 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
|
* for BusyBox since we want to avoid using the glibc NSS stuff, which
|
||||||
* increases target size and is often not needed embedded systems. */
|
* increases target size and is often not needed embedded systems. */
|
||||||
extern long my_getpwnam(char *name);
|
extern long my_getpwnam(const char *name);
|
||||||
extern long my_getgrnam(char *name);
|
extern long my_getgrnam(const char *name);
|
||||||
extern void my_getpwuid(char *name, long uid);
|
extern void my_getpwuid(char *name, long uid);
|
||||||
extern void my_getgrgid(char *group, long gid);
|
extern void my_getgrgid(char *group, long gid);
|
||||||
extern long my_getpwnamegid(char *name);
|
extern long my_getpwnamegid(const char *name);
|
||||||
|
|
||||||
extern int device_open(char *device, int mode);
|
extern int device_open(char *device, int mode);
|
||||||
|
|
||||||
|
17
utility.c
17
utility.c
@ -877,29 +877,32 @@ extern int parse_mode(const char *s, mode_t * theMode)
|
|||||||
#if defined BB_CHMOD_CHOWN_CHGRP || defined BB_PS || defined BB_LS \
|
#if defined BB_CHMOD_CHOWN_CHGRP || defined BB_PS || defined BB_LS \
|
||||||
|| defined BB_TAR || defined BB_ID || defined BB_LOGGER \
|
|| defined BB_TAR || defined BB_ID || defined BB_LOGGER \
|
||||||
|| defined BB_LOGNAME || defined BB_WHOAMI || defined BB_SH
|
|| defined BB_LOGNAME || defined BB_WHOAMI || defined BB_SH
|
||||||
|
|
||||||
|
#if defined BB_CHMOD_CHOWN_CHGRP || defined BB_ID
|
||||||
/* returns a uid given a username */
|
/* returns a uid given a username */
|
||||||
long my_getpwnam(char *name)
|
long my_getpwnam(const char *name)
|
||||||
{
|
{
|
||||||
struct passwd *myuser;
|
struct passwd *myuser;
|
||||||
|
|
||||||
myuser = getpwnam(name);
|
myuser = getpwnam(name);
|
||||||
if (myuser==NULL)
|
if (myuser==NULL)
|
||||||
return(-1);
|
error_msg_and_die("unknown user name: %s", name);
|
||||||
|
|
||||||
return myuser->pw_uid;
|
return myuser->pw_uid;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* returns a gid given a group name */
|
/* returns a gid given a group name */
|
||||||
long my_getgrnam(char *name)
|
long my_getgrnam(const char *name)
|
||||||
{
|
{
|
||||||
struct group *mygroup;
|
struct group *mygroup;
|
||||||
|
|
||||||
mygroup = getgrnam(name);
|
mygroup = getgrnam(name);
|
||||||
if (mygroup==NULL)
|
if (mygroup==NULL)
|
||||||
return(-1);
|
error_msg_and_die("unknown group name: %s", name);
|
||||||
|
|
||||||
return (mygroup->gr_gid);
|
return (mygroup->gr_gid);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* gets a username given a uid */
|
/* gets a username given a uid */
|
||||||
void my_getpwuid(char *name, long uid)
|
void my_getpwuid(char *name, long uid)
|
||||||
@ -927,18 +930,18 @@ void my_getgrgid(char *group, long gid)
|
|||||||
|
|
||||||
#if defined BB_ID
|
#if defined BB_ID
|
||||||
/* gets a gid given a user name */
|
/* gets a gid given a user name */
|
||||||
long my_getpwnamegid(char *name)
|
long my_getpwnamegid(const char *name)
|
||||||
{
|
{
|
||||||
struct group *mygroup;
|
struct group *mygroup;
|
||||||
struct passwd *myuser;
|
struct passwd *myuser;
|
||||||
|
|
||||||
myuser=getpwnam(name);
|
myuser=getpwnam(name);
|
||||||
if (myuser==NULL)
|
if (myuser==NULL)
|
||||||
error_msg_and_die( "unknown user name: %s", name);
|
error_msg_and_die("unknown user name: %s", name);
|
||||||
|
|
||||||
mygroup = getgrgid(myuser->pw_gid);
|
mygroup = getgrgid(myuser->pw_gid);
|
||||||
if (mygroup==NULL)
|
if (mygroup==NULL)
|
||||||
error_msg_and_die( "unknown gid %ld", (long)myuser->pw_gid);
|
error_msg_and_die("unknown gid %ld", (long)myuser->pw_gid);
|
||||||
|
|
||||||
return mygroup->gr_gid;
|
return mygroup->gr_gid;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user