[prev in list] [next in list] [prev in thread] [next in thread]
List: busybox
Subject: Re: Creating ramdisk on Fedora8
From: Denys Vlasenko <vda.linux () googlemail ! com>
Date: 2008-02-26 12:02:49
Message-ID: 200802261302.49320.vda.linux () googlemail ! com
[Download RAW message or body]
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
_______________________________________________
busybox mailing list
busybox@busybox.net
http://busybox.net/cgi-bin/mailman/listinfo/busybox
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic