diff -ur qpopper3.1.2/common/maillock.c qpopper3.1.2-my/common/maillock.c --- qpopper3.1.2/common/maillock.c Sun Nov 12 00:49:37 2000 +++ qpopper3.1.2-my/common/maillock.c Tue Dec 12 22:54:24 2000 @@ -187,7 +187,7 @@ */ int -Qmaillock ( char *usernm, +Qmaillock ( char *drop_name, int retrycnt, void *fTrace, const char *fn, @@ -215,13 +215,17 @@ * Get the path to the user's mail drop. * Append ".lock" to name. */ - - if ( genpath ( usernm, szLock, sizeof(szLock), - GNPH_SPOOL, fTrace, bDebugging ) < 0 ) { + + /* check that szLock can hold all of drop_name, ".lock" and a \0 */ + + if (sizeof(szLock) < (strlen(drop_name) + 6)) + { logit ( fTrace, POP_PRIORITY, HERE, - "genpath() returned error for user %s", usernm ); + "insufficient room to generate lock file for %s", drop_name); return L_ERROR; } + + strlcpy(szLock, drop_name, sizeof(szLock)); strcat ( szLock, ".lock" ); /* @@ -498,8 +502,8 @@ if ( DEBUGGING && bDebugging ) { logit ( fTrace, POP_DEBUG, HERE, - "maillock() for user %s (%s) [%s:%lu] returning %d (%d attempt(s))", - usernm, szLock, fn, (unsigned long) ln, nRet, attemptcnt ); + "maillock() on file %s (%s) [%s:%lu] returning %d (%d attempt(s))", + drop_name, szLock, fn, (unsigned long) ln, nRet, attemptcnt ); } return nRet; } diff -ur qpopper3.1.2/popper/pop_dropcopy.c qpopper3.1.2-my/popper/pop_dropcopy.c --- qpopper3.1.2/popper/pop_dropcopy.c Wed Oct 4 17:37:39 2000 +++ qpopper3.1.2-my/popper/pop_dropcopy.c Tue Dec 12 22:19:57 2000 @@ -1580,7 +1580,7 @@ */ DEBUG_LOG0 ( p, "Getting mail lock" ); - rslt = Qmaillock ( p->user, 2, p->trace, HERE, p->debug ); + rslt = Qmaillock ( p->drop_name, 2, p->trace, HERE, p->debug ); if ( rslt != 0 ) { flock ( dfd, LOCK_UN ); close ( dfd ); diff -ur qpopper3.1.2/popper/pop_updt.c qpopper3.1.2-my/popper/pop_updt.c --- qpopper3.1.2/popper/pop_updt.c Fri Aug 18 02:27:26 2000 +++ qpopper3.1.2-my/popper/pop_updt.c Tue Dec 12 22:20:09 2000 @@ -268,7 +268,7 @@ * Always use Qmaillock() */ - rslt = Qmaillock ( p->user, 4, p->trace, HERE, p->debug ); + rslt = Qmaillock ( p->drop_name, 4, p->trace, HERE, p->debug ); if ( rslt != 0 ) return ( pop_msg ( p, POP_FAILURE, HERE, "maillock error '%s' (%d) on '%s': %s (%d)", @@ -719,7 +719,7 @@ DEBUG_LOG1 ( p, "Opening mail drop \"%s\"", p->drop_name ); - rslt = Qmaillock ( p->user, 4, p->trace, HERE, p->debug ); + rslt = Qmaillock ( p->drop_name, 4, p->trace, HERE, p->debug ); if ( rslt != 0 ) return ( pop_msg ( p, POP_FAILURE, HERE, "maillock error '%s' (%d) on '%s': %s (%d)",