|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T p
Length: 1975 (0x7b7) Types: TextFile Names: »pop_pass.c«
└─⟦9ae75bfbd⟧ Bits:30007242 EUUGD3: Starter Kit └─⟦ac17ffda3⟧ »EurOpenD3/mail/popper-1.7b1.tar.Z« └─⟦d6ac5563a⟧ └─⟦this⟧ »pop_pass.c«
/* * Copyright (c) 1989 Regents of the University of California. * All rights reserved. The Berkeley software License Agreement * specifies the terms and conditions for redistribution. */ #ifndef lint static char copyright[] = "@(#) Copyright (c) 1989 Regents of the University of California.\n\ All rights reserved.\n"; static char SccsId[] = "@(#)pop_pass.c 1.4 5/15/90"; #endif not lint #include <stdio.h> #include <sys/types.h> #include <strings.h> #include <pwd.h> #include "popper.h" /* * pass: Obtain the user password from a POP client */ int pop_pass (p) POP * p; { register struct passwd * pw; char *crypt(); /* Look for the user in the password file */ if ((pw = getpwnam(p->user)) == NULL) return (pop_msg(p,POP_FAILURE, "Password supplied for \"%s\" is incorrect.",p->user)); /* We don't accept connections from users with null passwords */ if (pw->pw_passwd == NULL) return (pop_msg(p,POP_FAILURE, "Password supplied for \"%s\" is incorrect.",p->user)); /* Compare the supplied password with the password file entry */ if (strcmp (crypt (p->pop_parm[1], pw->pw_passwd), pw->pw_passwd) != 0) return (pop_msg(p,POP_FAILURE, "Password supplied for \"%s\" is incorrect.",p->user)); /* Build the name of the user's maildrop */ sprintf(p->drop_name,"%s/%s",POP_MAILDIR,p->user); /* Set the group and user id */ setgid(pw->pw_gid); setuid(pw->pw_uid); #ifdef DEBUG if(p->debug)pop_log(p,POP_DEBUG,"uid = %d, gid = %d",getuid(),getgid()); #endif DEBUG /* Get information about the maildrop */ if (pop_dropinfo(p) != POP_SUCCESS) return(POP_FAILURE); /* Initialize the last-message-accessed number */ p->last_msg = 0; /* Authorization completed successfully */ return (pop_msg (p,POP_SUCCESS, "%s has %d message(s) (%d octets).", p->user,p->msg_count,p->drop_size)); }