diff -ur qpopper3.1.2-all3/common/genpath.c qpopper3.1.2-my/common/genpath.c --- qpopper3.1.2-all3/common/genpath.c Wed Dec 13 11:33:24 2000 +++ qpopper3.1.2-my/common/genpath.c Wed Dec 13 11:58:39 2000 @@ -101,14 +101,18 @@ */ int -genpath ( char *pszUser, char *pszDrop, int iDropLen, GNPH_WHICH iWhich, +genpath ( struct passwd *pw, char *pszDrop, int iDropLen, GNPH_WHICH iWhich, void *fTrace, int bDebugging ) { - if ( !pszUser || *pszUser == '\0' ) { - logit ( fTrace, POP_PRIORITY, HERE, "Bogus user passed to genpath" ); - return -1; /*bogus login name*/ + char *pszUser; + + if (pw == NULL) + { + logit ( fTrace, POP_PRIORITY, HERE, "Bogus passwd struct passed to genpath" ); + return -1; /*bogus passwd struct*/ } + pszUser = pw->pw_name; #if (HASH_SPOOL == 1) /*Now, perform the hash*/ @@ -255,17 +259,7 @@ #ifdef HOMEDIRMAIL { - struct passwd *pwp; - pwp = getpwnam ( pszUser ); - if ( pwp == NULL ) { - logit ( fTrace, - POP_PRIORITY, - HERE, - "Unable to retrieve password entry for user %s", - pszUser); - return -1; - } - strlcpy ( pszDrop, pwp->pw_dir, iDropLen ); + strlcpy ( pszDrop, pw->pw_dir, iDropLen ); strlcat ( pszDrop, "/", iDropLen ); switch ( iWhich ) { diff -ur qpopper3.1.2-all3/common/genpath.h qpopper3.1.2-my/common/genpath.h --- qpopper3.1.2-all3/common/genpath.h Fri Jun 30 22:58:25 2000 +++ qpopper3.1.2-my/common/genpath.h Wed Dec 13 11:47:43 2000 @@ -20,6 +20,8 @@ #ifndef _GENPATH_H_ #define _GENPATH_H_ +#include + #include "config.h" @@ -56,7 +58,7 @@ * -1 if there is an error (and error is logged), * 1 if all went well. */ -int genpath ( char *pszUser, char *pszDrop, int iDropLen, GNPH_WHICH iWhich, +int genpath ( struct passwd *pw, char *pszDrop, int iDropLen, GNPH_WHICH iWhich, void *fTrace, int bDebugging ); diff -ur qpopper3.1.2-all3/popper/pop_dropcopy.c qpopper3.1.2-my/popper/pop_dropcopy.c --- qpopper3.1.2-all3/popper/pop_dropcopy.c Wed Dec 13 11:33:36 2000 +++ qpopper3.1.2-my/popper/pop_dropcopy.c Wed Dec 13 11:46:41 2000 @@ -1154,7 +1154,7 @@ #endif /* DO_TIMING */ - if ( genpath ( p->user, + if ( genpath ( p->pw, p->drop_name, sizeof(p->drop_name), GNPH_SPOOL, @@ -1175,7 +1175,7 @@ * we build it where it goes. * */ - if ( genpath ( p->user, + if ( genpath ( p->pw, p->temp_drop, sizeof(p->temp_drop), GNPH_OLDPOP, @@ -1185,7 +1185,7 @@ "[SYS/TEMP] Unable to get temporary drop name" ) ); if ( stat ( p->temp_drop, &mybuf ) == -1 || mybuf.st_size <= 0 ) { - if ( genpath ( p->user, + if ( genpath ( p->pw, p->temp_drop, sizeof(p->temp_drop), GNPH_POP, @@ -1197,7 +1197,7 @@ #else /* not using HASH_SPOOL or HOMEDIRMAIL, or set DONT_CHECK_OLD_SPOOL */ - if ( genpath ( p->user, + if ( genpath ( p->pw, p->temp_drop, sizeof(p->temp_drop), GNPH_POP, @@ -1283,7 +1283,7 @@ /* * Get the path name. */ - if ( genpath ( p->user, + if ( genpath ( p->pw, buffer, sizeof(buffer), GNPH_PATH, diff -ur qpopper3.1.2-all3/popper/pop_xmit.c qpopper3.1.2-my/popper/pop_xmit.c --- qpopper3.1.2-all3/popper/pop_xmit.c Tue Jul 18 02:03:24 2000 +++ qpopper3.1.2-my/popper/pop_xmit.c Wed Dec 13 11:46:46 2000 @@ -90,7 +90,7 @@ * Create a temporary file into which to copy the user's message */ - if ( genpath ( p->user, + if ( genpath ( p->pw, temp_xmit, sizeof(temp_xmit), GNPH_XMT,