Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Bad configure test for getpwent() ?
- X-seq: zsh-workers 8514
- From: "Bart Schaefer" <schaefer@xxxxxxxxxxxxxxxxxxxxxxx>
- To: zsh-workers@xxxxxxxxxxxxxx
- Subject: Bad configure test for getpwent() ?
- Date: Wed, 3 Nov 1999 10:34:52 +0000
- Mailing-list: contact zsh-workers-help@xxxxxxxxxxxxxx; run by ezmlm
No patch because I'm not sure it's wrong, but there's this test:
--- 8< --- cut ---
dnl -----------
dnl test for faked getpwnam() entry, ie a single entry returned for any username
dnl for instance, BeOS R4.51 is not multiuser yet, and fakes getpwnam()
dnl test by looking up two usernames that shouldn't succeed, and compare entry
dnl -----------
if test $ac_cv_func_getpwnam=yes; then
AC_CACHE_CHECK(if getpwnam() is faked,
zsh_cv_sys_getpwnam_faked,
[AC_TRY_RUN([
#include <pwd.h>
main() {
struct passwd *pw1, *pw2;
char buf[1024];
sprintf(buf, "%d:%d", getpid(), rand());
pw1=getpwnam(buf);
sprintf(buf, "%d:%d", rand(), getpid());
pw2=getpwnam(buf);
exit(pw1!=0 && pw2!=0 && !strcmp(pw1->pw_name, pw2->pw_name));
}
],
zsh_cv_sys_getpwnam_faked=no,
zsh_cv_sys_getpwnam_faked=yes,
zsh_cv_sys_getpwnam_faked=no)])
if test $zsh_cv_sys_getpwnam_faked = yes; then
AC_DEFINE(GETPWNAM_FAKED)
fi
fi
--- 8< --- cut ---
I don't think getpwent() is required to return a unique pointer each time;
that is, I think it's allowed to re-use an internal static buffer for each
entry that it returns. That would mean that this test always succeeds ...
I think the only right way is to test the first pointer for nonzero, copy
the entry into a local struct passwd, then call getpwent() again and do
the comparison.
--
Bart Schaefer Brass Lantern Enterprises
http://www.well.com/user/barts http://www.brasslantern.com
Messages sorted by:
Reverse Date,
Date,
Thread,
Author