libbb: make user/group name cache strings longer (~27 chars)

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2011-03-01 16:27:13 +01:00
parent 3b28dae17d
commit 7d65abea09
3 changed files with 12 additions and 12 deletions

View File

@ -839,14 +839,14 @@ char* xuid2uname(uid_t uid) FAST_FUNC;
char* xgid2group(gid_t gid) FAST_FUNC; char* xgid2group(gid_t gid) FAST_FUNC;
char* uid2uname(uid_t uid) FAST_FUNC; char* uid2uname(uid_t uid) FAST_FUNC;
char* gid2group(gid_t gid) FAST_FUNC; char* gid2group(gid_t gid) FAST_FUNC;
char* uid2uname_utoa(long uid) FAST_FUNC; char* uid2uname_utoa(uid_t uid) FAST_FUNC;
char* gid2group_utoa(long gid) FAST_FUNC; char* gid2group_utoa(gid_t gid) FAST_FUNC;
/* versions which cache results (useful for ps, ls etc) */ /* versions which cache results (useful for ps, ls etc) */
const char* get_cached_username(uid_t uid) FAST_FUNC; const char* get_cached_username(uid_t uid) FAST_FUNC;
const char* get_cached_groupname(gid_t gid) FAST_FUNC; const char* get_cached_groupname(gid_t gid) FAST_FUNC;
void clear_username_cache(void) FAST_FUNC; void clear_username_cache(void) FAST_FUNC;
/* internally usernames are saved in fixed-sized char[] buffers */ /* 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 #if ENABLE_FEATURE_CHECK_NAMES
void die_if_bad_username(const char* name) FAST_FUNC; void die_if_bad_username(const char* name) FAST_FUNC;
#else #else

View File

@ -72,13 +72,13 @@ char* FAST_FUNC gid2group(gid_t gid)
return (gr) ? gr->gr_name : NULL; 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); char *name = uid2uname(uid);
return (name) ? name : utoa(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); char *name = gid2group(gid);
return (name) ? name : utoa(gid); return (name) ? name : utoa(gid);

View File

@ -12,13 +12,13 @@
#include "libbb.h" #include "libbb.h"
typedef struct unsigned_to_name_map_t { typedef struct id_to_name_map_t {
long id; uid_t id;
char name[USERNAME_MAX_SIZE]; char name[USERNAME_MAX_SIZE];
} unsigned_to_name_map_t; } id_to_name_map_t;
typedef struct cache_t { typedef struct cache_t {
unsigned_to_name_map_t *cache; id_to_name_map_t *cache;
int size; int size;
} cache_t; } cache_t;
@ -39,7 +39,7 @@ void FAST_FUNC clear_username_cache(void)
#if 0 /* more generic, but we don't need that yet */ #if 0 /* more generic, but we don't need that yet */
/* Returns -N-1 if not found. */ /* Returns -N-1 if not found. */
/* cp->cache[N] is allocated and must be filled in this case */ /* 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; int i;
for (i = 0; i < cp->size; i++) for (i = 0; i < cp->size; i++)
@ -52,8 +52,8 @@ static int get_cached(cache_t *cp, unsigned id)
} }
#endif #endif
static char* get_cached(cache_t *cp, long id, static char* get_cached(cache_t *cp, uid_t id,
char* FAST_FUNC x2x_utoa(long id)) char* FAST_FUNC x2x_utoa(uid_t id))
{ {
int i; int i;
for (i = 0; i < cp->size; i++) for (i = 0; i < cp->size; i++)