- (djm) Fix broken inet_ntoa check and ut_user/ut_name confusion, report

from Jim Watt <jimw@peisj.pebio.com>
This commit is contained in:
Damien Miller 2000-07-11 12:15:54 +10:00
parent 99bca607dc
commit 7a0e5dc981
3 changed files with 12 additions and 10 deletions

View File

@ -4,6 +4,8 @@
- (djm) ReliantUNIX support from Udo Schweigert <ust@cert.siemens.de> - (djm) ReliantUNIX support from Udo Schweigert <ust@cert.siemens.de>
- (djm) NeXT: dirent structures to get scp working from Ben Lindstrom - (djm) NeXT: dirent structures to get scp working from Ben Lindstrom
<mouring@pconline.com> <mouring@pconline.com>
- (djm) Fix broken inet_ntoa check and ut_user/ut_name confusion, report
from Jim Watt <jimw@peisj.pebio.com>
20000709 20000709
- (djm) Only enable PAM_TTY kludge for Linux. Problem report from - (djm) Only enable PAM_TTY kludge for Linux. Problem report from

View File

@ -87,7 +87,7 @@ int getaddrinfo(const char *hostname, const char *servname,
return EAI_MEMORY; return EAI_MEMORY;
} }
if (inet_aton(hostname, &in) != -1) { if (inet_aton(hostname, &in)) {
if (NULL != (*res = malloc_ai(port, in.s_addr))) if (NULL != (*res = malloc_ai(port, in.s_addr)))
return 0; return 0;
else else

View File

@ -160,7 +160,7 @@
#include "xmalloc.h" #include "xmalloc.h"
#include "loginrec.h" #include "loginrec.h"
RCSID("$Id: loginrec.c,v 1.16 2000/07/09 13:26:28 djm Exp $"); RCSID("$Id: loginrec.c,v 1.17 2000/07/11 02:15:54 djm Exp $");
/** /**
** prototypes for helper functions in this file ** prototypes for helper functions in this file
@ -606,7 +606,7 @@ construct_utmp(struct logininfo *li,
*/ */
/* Use strncpy because we don't necessarily want null termination */ /* Use strncpy because we don't necessarily want null termination */
strncpy(ut->ut_user, li->username, MIN_SIZEOF(ut->ut_user, li->username)); strncpy(ut->ut_name, li->username, MIN_SIZEOF(ut->ut_name, li->username));
# ifdef HAVE_HOST_IN_UTMP # ifdef HAVE_HOST_IN_UTMP
strncpy(ut->ut_host, li->hostname, MIN_SIZEOF(ut->ut_host, li->hostname)); strncpy(ut->ut_host, li->hostname, MIN_SIZEOF(ut->ut_host, li->hostname));
# endif # endif
@ -670,7 +670,7 @@ construct_utmpx(struct logininfo *li, struct utmpx *utx)
*/ */
/* strncpy(): Don't necessarily want null termination */ /* strncpy(): Don't necessarily want null termination */
strncpy(utx->ut_user, li->username, MIN_SIZEOF(utx->ut_user, li->username)); strncpy(utx->ut_name, li->username, MIN_SIZEOF(utx->ut_name, li->username));
# ifdef HAVE_HOST_IN_UTMPX # ifdef HAVE_HOST_IN_UTMPX
strncpy(utx->ut_host, li->hostname, MIN_SIZEOF(utx->ut_host, li->hostname)); strncpy(utx->ut_host, li->hostname, MIN_SIZEOF(utx->ut_host, li->hostname));
# endif # endif
@ -730,12 +730,12 @@ utmp_write_direct(struct logininfo *li, struct utmp *ut)
/* /*
* Prevent luser from zero'ing out ut_host. * Prevent luser from zero'ing out ut_host.
* If the new ut_line is empty but the old one is not * If the new ut_line is empty but the old one is not
* and ut_line and ut_user match, preserve the old ut_line. * and ut_line and ut_name match, preserve the old ut_line.
*/ */
if (atomicio(read, fd, &old_ut, sizeof(old_ut)) == sizeof(old_ut) && if (atomicio(read, fd, &old_ut, sizeof(old_ut)) == sizeof(old_ut) &&
(ut->ut_host[0] == '\0') && (old_ut.ut_host[0] != '\0') && (ut->ut_host[0] == '\0') && (old_ut.ut_host[0] != '\0') &&
(strncmp(old_ut.ut_line, ut->ut_line, sizeof(ut->ut_line)) == 0) && (strncmp(old_ut.ut_line, ut->ut_line, sizeof(ut->ut_line)) == 0) &&
(strncmp(old_ut.ut_user, ut->ut_user, sizeof(ut->ut_user)) == 0)) { (strncmp(old_ut.ut_name, ut->ut_name, sizeof(ut->ut_name)) == 0)) {
(void)memcpy(ut->ut_host, old_ut.ut_host, sizeof(ut->ut_host)); (void)memcpy(ut->ut_host, old_ut.ut_host, sizeof(ut->ut_host));
} }
@ -996,8 +996,8 @@ wtmp_write_entry(struct logininfo *li)
static int static int
wtmp_islogin(struct logininfo *li, struct utmp *ut) wtmp_islogin(struct logininfo *li, struct utmp *ut)
{ {
if (strncmp(li->username, ut->ut_user, if (strncmp(li->username, ut->ut_name,
MIN_SIZEOF(li->username, ut->ut_user)) == 0) { MIN_SIZEOF(li->username, ut->ut_name)) == 0) {
# ifdef HAVE_TYPE_IN_UTMP # ifdef HAVE_TYPE_IN_UTMP
if (ut->ut_type & USER_PROCESS) if (ut->ut_type & USER_PROCESS)
return 1; return 1;
@ -1151,8 +1151,8 @@ wtmpx_write_entry(struct logininfo *li)
static int static int
wtmpx_islogin(struct logininfo *li, struct utmpx *utx) wtmpx_islogin(struct logininfo *li, struct utmpx *utx)
{ {
if ( strncmp(li->username, utx->ut_user, if ( strncmp(li->username, utx->ut_name,
MIN_SIZEOF(li->username, utx->ut_user)) == 0 ) { MIN_SIZEOF(li->username, utx->ut_name)) == 0 ) {
# ifdef HAVE_TYPE_IN_UTMPX # ifdef HAVE_TYPE_IN_UTMPX
if (utx->ut_type == USER_PROCESS) if (utx->ut_type == USER_PROCESS)
return 1; return 1;