> On Thu, Jan 5, 2012 at 7:52 PM, Dan Fandrich <[email protected]> wrote:
>> On Thu, Jan 05, 2012 at 03:06:06PM +0000, Hin-Tak Leung wrote:
>>> The error message was in the change-log, included in the patch:
>>>
>>> ---------
>>>     libbb/lib.a(change_identity.o): In function `change_identity':
>>>     change_identity.c:(.text.change_identity+0x28): undefined reference to 
>>> `endgrent'
>>>     collect2: ld returned 1 exit status
>>>     make: *** [busybox_unstripped] Error 1
>>> ---------
>>>
>>> Maybe the problem is in libbb/change_identity.c ?
>>
>> I've been getting the same problem lately. I worked around it locally with
>> this patch:
>>
>> --- a/libbb/change_identity.c
>> +++ b/libbb/change_identity.c
>> @@ -35,7 +35,9 @@ void FAST_FUNC change_identity(const struct passwd *pw)
>>  {
>>        if (initgroups(pw->pw_name, pw->pw_gid) == -1)
>>                bb_perror_msg_and_die("can't set groups");
>> +#ifndef __ANDROID__
>>        endgrent(); /* helps to close a fd used internally by libc */
>> +#endif
>>        xsetgid(pw->pw_gid);
>>        xsetuid(pw->pw_uid);
>>  }
>>
>> but it seemed a bit inelegant to me. But, that that line seems to have been
>> added to work around a specific libc issue, maybe it's not to ugly to
>> remove it on libcs that don't have that issue.

> How about this fix?

> http://git.busybox.net/busybox/commit/?id=6b64a269766ace40c56826738de446537add37de


In aosp i use a android.c with :

#if !ENABLE_USE_BB_PWD_GRP
int setpwent() { return 0; }
void setgrent() {}
void endgrent() {}
#endif

_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to