Creating ramdisk on Fedora8
Denys Vlasenko
vda.linux at googlemail.com
Tue Feb 26 12:02:49 UTC 2008
On Tuesday 26 February 2008 10:06, Sanjeev Premi wrote:
> Hi,
>
> I updated my build machine from RHEL machine to Fedora Core
> 8.
> All standard steps to build buisybox (1.9.0) & create a
> ramdisk image go well.
>
> However, when I browse this ramdisk on my embedded board, I
> see strange characters in "owner" and "group" fields e.g.
> drwxr-xr-x 2 R#@ R#@ 2048 Feb 26 2008 bin
> drwxrwxrwt 5 R#@ R#@ 2800 Jan 1 00:00 dev
> drwxr-xr-x 3 R#@ R#@ 1024 Feb 26 2008 etc
> drwxr-xr-x 2 R#@ R#@ 1024 Feb 26 2008
> home
>
> Disabled selinux completely ...just in case, but did not
> help either.
>
> Any pointers??
It happens here (coreutils/ls.c):
#if ENABLE_FEATURE_LS_USERNAME
printf("%-8.8s %-8.8s",
get_cached_username(dn->dstat.st_uid),
get_cached_groupname(dn->dstat.st_gid));
column += 17;
break;
#endif
These functions are here:
static char* get_cached(cache_t *cp, unsigned id, ug_func* fp)
{
...
fp(cp->cache[i].name, sizeof(cp->cache[i].name), id);
return cp->cache[i].name;
}
const char* get_cached_username(uid_t uid)
{
return get_cached(&username, uid, bb_getpwuid);
}
const char* get_cached_groupname(gid_t gid)
{
return get_cached(&groupname, gid, bb_getgrgid);
}
Lets look at bb_getpwuid. We clearlt have bufsize > 0 (it is set to
sizeof(cp->cache[i].name)), so.. can you add these bb_error_msg's
and see what they print?
static char* bb_getug(char *buffer, int bufsize, char *idname, long id, char prefix)
{
if (bufsize > 0) {
assert(buffer != NULL);
if (idname) {
+bb_error_msg("CASE 1: user found, name '%s'", idname);
return safe_strncpy(buffer, idname, bufsize);
}
+bb_error_msg("CASE 2: user not found, returning numeric '%ld'", id);
snprintf(buffer, bufsize, "%ld", id);
} else if (bufsize < 0 && !idname) {
bb_error_msg_and_die("unknown %cid %ld", prefix, id);
}
return idname;
}
char* bb_getpwuid(char *name, int bufsize, long uid)
{
struct passwd *myuser = getpwuid(uid);
return bb_getug(name, bufsize,
(myuser ? myuser->pw_name : (char*)myuser),
uid, 'u');
}
--
vda
More information about the busybox
mailing list