/* passwd.c --- verifying typed passwords with the OS.
- * xscreensaver, Copyright (c) 1993-1997 Jamie Zawinski <jwz@netscape.com>
+ * xscreensaver, Copyright (c) 1993-1998 Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
#include <sys/types.h>
#ifndef VMS
# include <pwd.h>
+# include <grp.h>
#else /* VMS */
# include "vms-pwd.h"
#endif /* VMS */
# include <sys/audit.h>
# include <pwdadj.h>
-# define PRTYPE passwd_adjunct *
+# define PWTYPE struct passwd_adjunct *
# define PWPSLOT pwa_passwd
# define GETPW getpwanam
# include <hpsecurity.h>
# include <prot.h>
-# define PRTYPE struct s_passwd *
+# define PWTYPE struct s_passwd *
# define PWPSLOT pw_passwd
# define GETPW getspwnam
# define crypt bigcrypt
}
fprintf (stderr, "%s: couldn't get password of \"%s\"\n",
- progname, (user ? user : "(null)"));
+ blurb(), (user ? user : "(null)"));
return 0;
}
Bool
passwd_valid_p (const char *typed_passwd)
{
+ char *s = 0; /* note that on some systems, crypt() may return null */
+
if (encrypted_user_passwd &&
- !strcmp ((char *) crypt (typed_passwd, encrypted_user_passwd),
- encrypted_user_passwd))
+ (s = (char *) crypt (typed_passwd, encrypted_user_passwd)) &&
+ !strcmp (s, encrypted_user_passwd))
return True;
/* do not allow root to have a null password. */
else if (typed_passwd[0] &&
encrypted_root_passwd &&
- !strcmp ((char *) crypt (typed_passwd, encrypted_root_passwd),
- encrypted_root_passwd))
+ (s = (char *) crypt (typed_passwd, encrypted_root_passwd)) &&
+ !strcmp (s, encrypted_root_passwd))
return True;
else
Bool lock_init (int argc, char **argv) { return True; }
#endif /* VMS */
-
#endif /* NO_LOCKING -- whole file */