From: Denys Vlasenko Date: Tue, 1 Mar 2011 15:27:13 +0000 (+0100) Subject: libbb: make user/group name cache strings longer (~27 chars) X-Git-Tag: 1_19_0~261 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=7d65abea092e917bc2320cbf1d5a2dccb2a8288f;p=oweals%2Fbusybox.git libbb: make user/group name cache strings longer (~27 chars) Signed-off-by: Denys Vlasenko --- diff --git a/include/libbb.h b/include/libbb.h index 65c319402..c26012c5d 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -839,14 +839,14 @@ char* xuid2uname(uid_t uid) FAST_FUNC; char* xgid2group(gid_t gid) FAST_FUNC; char* uid2uname(uid_t uid) FAST_FUNC; char* gid2group(gid_t gid) FAST_FUNC; -char* uid2uname_utoa(long uid) FAST_FUNC; -char* gid2group_utoa(long gid) FAST_FUNC; +char* uid2uname_utoa(uid_t uid) FAST_FUNC; +char* gid2group_utoa(gid_t gid) FAST_FUNC; /* versions which cache results (useful for ps, ls etc) */ const char* get_cached_username(uid_t uid) FAST_FUNC; const char* get_cached_groupname(gid_t gid) FAST_FUNC; void clear_username_cache(void) FAST_FUNC; /* internally usernames are saved in fixed-sized char[] buffers */ -enum { USERNAME_MAX_SIZE = 16 - sizeof(int) }; +enum { USERNAME_MAX_SIZE = 32 - sizeof(uid_t) }; #if ENABLE_FEATURE_CHECK_NAMES void die_if_bad_username(const char* name) FAST_FUNC; #else diff --git a/libbb/bb_pwd.c b/libbb/bb_pwd.c index 32406cb58..4829b723a 100644 --- a/libbb/bb_pwd.c +++ b/libbb/bb_pwd.c @@ -72,13 +72,13 @@ char* FAST_FUNC gid2group(gid_t gid) return (gr) ? gr->gr_name : NULL; } -char* FAST_FUNC uid2uname_utoa(long uid) +char* FAST_FUNC uid2uname_utoa(uid_t uid) { char *name = uid2uname(uid); return (name) ? name : utoa(uid); } -char* FAST_FUNC gid2group_utoa(long gid) +char* FAST_FUNC gid2group_utoa(gid_t gid) { char *name = gid2group(gid); return (name) ? name : utoa(gid); diff --git a/libbb/procps.c b/libbb/procps.c index fb4c32001..5833a1f0d 100644 --- a/libbb/procps.c +++ b/libbb/procps.c @@ -12,13 +12,13 @@ #include "libbb.h" -typedef struct unsigned_to_name_map_t { - long id; +typedef struct id_to_name_map_t { + uid_t id; char name[USERNAME_MAX_SIZE]; -} unsigned_to_name_map_t; +} id_to_name_map_t; typedef struct cache_t { - unsigned_to_name_map_t *cache; + id_to_name_map_t *cache; int size; } cache_t; @@ -39,7 +39,7 @@ void FAST_FUNC clear_username_cache(void) #if 0 /* more generic, but we don't need that yet */ /* Returns -N-1 if not found. */ /* cp->cache[N] is allocated and must be filled in this case */ -static int get_cached(cache_t *cp, unsigned id) +static int get_cached(cache_t *cp, uid_t id) { int i; for (i = 0; i < cp->size; i++) @@ -52,8 +52,8 @@ static int get_cached(cache_t *cp, unsigned id) } #endif -static char* get_cached(cache_t *cp, long id, - char* FAST_FUNC x2x_utoa(long id)) +static char* get_cached(cache_t *cp, uid_t id, + char* FAST_FUNC x2x_utoa(uid_t id)) { int i; for (i = 0; i < cp->size; i++)