From 3f19868cda933c3a3699f58f3d6e494689972aff Mon Sep 17 00:00:00 2001 From: Charl Botha Date: Fri, 15 Jun 2001 21:24:30 +0000 Subject: Integrated contributed patch. --- README | 4 ++-- changelog | 7 ++++++- pam_pwdfile.c | 17 ++++++++++++----- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/README b/README index d30f8fe..7a366dd 100644 --- a/README +++ b/README @@ -1,8 +1,8 @@ README for pam_pwdfile PAM module - Charl P. Botha -$Id: README,v 1.6 2001-05-12 09:58:43 cpbotha Exp $ +$Id: README,v 1.7 2001-06-15 21:24:30 cpbotha Exp $ --------------------------------------------------------------------------- -This is version 0.8 of pam_pwdfile. +This is version 0.9 of pam_pwdfile. This pam module can be used for the authentication service only, in cases where one wants to use a different set of passwords than those in the main diff --git a/changelog b/changelog index cfe8171..78e3413 100644 --- a/changelog +++ b/changelog @@ -1,7 +1,12 @@ changelog for pam_pwdfile PAM module - Charl P. Botha -$Id: changelog,v 1.8 2001-05-12 09:58:43 cpbotha Exp $ +$Id: changelog,v 1.9 2001-06-15 21:24:30 cpbotha Exp $ --------------------------------------------------------------------------- +0.9: Fri Jun 15 23:23:31 CEST 2001 + +* integrated patch by Stephen Darragh to fix problems with + short MD5 crypts and trailing newlines. + 0.8: Sat May 12 11:57:18 CEST 2001 * the MrKen (aka MJ Turner) release. Removed unnecessary include that was diff --git a/pam_pwdfile.c b/pam_pwdfile.c index ac8e8cb..a5c994c 100644 --- a/pam_pwdfile.c +++ b/pam_pwdfile.c @@ -1,12 +1,12 @@ /* pam_pwdfile.c copyright 1999 by Charl P. Botha * - * $Id: pam_pwdfile.c,v 1.12 2001-05-12 09:59:45 cpbotha Exp $ + * $Id: pam_pwdfile.c,v 1.13 2001-06-15 21:24:30 cpbotha Exp $ * * pam authentication module that can be pointed at any username/crypted * text file so that pam using application can use an alternate set of * passwords than specified in system password database * - * version 0.8 + * version 0.9 * * Copyright (c) Charl P. Botha, 1999. All rights reserved * @@ -179,15 +179,18 @@ int _set_auth_tok( pam_handle_t *pamh, static int fgetpwnam(FILE *stream, const char *name, char *password) { char tempLine[256], *tpointer, *curname, *curpass, *fgr; int loopdone, pwdfound; + int len; /* go to beginning of file */ rewind(stream); /* some control variables */ loopdone = pwdfound = 0; + /* fgets should do this, but we make sure */ + tempLine[255] = '\0'; /* iterate through lines in file, until end of file */ do { /* get the current line */ - fgr = fgets(tempLine,256,stream); + fgr = fgets(tempLine,255,stream); /* if it's valid, go on */ if ( fgr != NULL) { /* first get the username out */ @@ -197,6 +200,10 @@ static int fgetpwnam(FILE *stream, const char *name, char *password) { if (strcmp(curname,name)==0) { /* at least we know our loop is done */ loopdone = 1; + /* remove possible trailing newline */ + len = strlen(tpointer); + if (tpointer[len - 1] == '\n') + tpointer[len - 1] = '\0'; /* get the password and put it in its place */ curpass = strsep(&tpointer,":"); if (curpass != NULL) { @@ -318,7 +325,7 @@ PAM_EXTERN int pam_sm_authenticate(pam_handle_t *pamh, int flags, } /* DEBUG */ - D(_pam_log(LOG_ERR,"got crypted password == %s", crypted_password)); + D(_pam_log(LOG_ERR,"got crypted password == '%s'", crypted_password)); /* Extract the salt and set the passwd length, depending on MD5 or DES */ if (strncmp(crypted_password, "$1$", 3) == 0) { @@ -332,7 +339,7 @@ PAM_EXTERN int pam_sm_authenticate(pam_handle_t *pamh, int flags, } /* DEBUG */ - D(_pam_log(LOG_ERR,"user password crypted is %s", crypt(password,salt))); + D(_pam_log(LOG_ERR,"user password crypted is '%s'", crypt(password,salt))); /* if things don't match up, complain */ if (strcmp(crypt(password,salt),crypted_password)!=0) { -- cgit v1.2.3