From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19622 invoked from network); 3 Nov 1999 10:35:10 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 3 Nov 1999 10:35:10 -0000 Received: (qmail 16248 invoked by alias); 3 Nov 1999 10:35:04 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 8514 Received: (qmail 16238 invoked from network); 3 Nov 1999 10:35:02 -0000 From: "Bart Schaefer" Message-Id: <991103103452.ZM19665@candle.brasslantern.com> Date: Wed, 3 Nov 1999 10:34:52 +0000 X-Mailer: Z-Mail (5.0.0 30July97) To: zsh-workers@sunsite.auc.dk Subject: Bad configure test for getpwent() ? MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii 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 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