Date: Wed, 12 Jan 2000 08:00:02 -0800 (PST) From: Daniel Hagan <dhagan@cs.vt.edu> To: freebsd-bugs@FreeBSD.org Subject: Re: bin/4238 - chpass time delay sensitivity [PATCH] Message-ID: <200001121600.IAA01959@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR bin/4238; it has been noted by GNATS.
From: Daniel Hagan <dhagan@cs.vt.edu>
To: John Polstra <jdp@polstra.com>
Cc: freebsd-gnats-submit@freebsd.org
Subject: Re: bin/4238 - chpass time delay sensitivity [PATCH]
Date: Wed, 12 Jan 2000 10:56:56 -0500 (EST)
Updated to use MD5 hashes to detect changes.
-Daniel
Index: Makefile
===================================================================
RCS file: /src/cvs/src/usr.bin/chpass/Makefile,v
retrieving revision 1.20
diff -c -r1.20 Makefile
*** Makefile 1999/12/18 13:55:13 1.20
--- Makefile 2000/01/12 14:31:27
***************
*** 27,34 ****
#Some people need this, uncomment to activate
#COPTS+= -DRESTRICT_FULLNAME_CHANGE
! DPADD= ${LIBRPCSVC} ${LIBCRYPT}
! LDADD+= -lrpcsvc -lcrypt
CLEANFILES= ${GENSRCS}
--- 27,34 ----
#Some people need this, uncomment to activate
#COPTS+= -DRESTRICT_FULLNAME_CHANGE
! DPADD= ${LIBRPCSVC} ${LIBCRYPT} ${LIBMD}
! LDADD+= -lrpcsvc -lcrypt -lmd
CLEANFILES= ${GENSRCS}
Index: edit.c
===================================================================
RCS file: /src/cvs/src/usr.bin/chpass/edit.c,v
retrieving revision 1.16
diff -c -r1.16 edit.c
*** edit.c 1999/12/21 19:30:09 1.16
--- edit.c 2000/01/12 14:36:31
***************
*** 39,48 ****
--- 39,50 ----
#include <sys/param.h>
#include <sys/stat.h>
+ #include <sys/types.h>
#include <ctype.h>
#include <err.h>
#include <errno.h>
+ #include <md5.h>
#include <paths.h>
#include <pwd.h>
#include <stdio.h>
***************
*** 65,81 ****
struct passwd *pw;
{
struct stat begin, end;
for (;;) {
if (stat(tempname, &begin))
pw_error(tempname, 1, 1);
pw_edit(1);
if (stat(tempname, &end))
pw_error(tempname, 1, 1);
! if (begin.st_mtime == end.st_mtime) {
warnx("no changes made");
pw_error(NULL, 0, 0);
}
if (verify(pw))
break;
pw_prompt();
--- 67,89 ----
struct passwd *pw;
{
struct stat begin, end;
+ char *begin_sum, *end_sum;
for (;;) {
if (stat(tempname, &begin))
pw_error(tempname, 1, 1);
+ begin_sum = MD5File(tempname, (char *)NULL);
pw_edit(1);
if (stat(tempname, &end))
pw_error(tempname, 1, 1);
! end_sum = MD5File(tempname, (char *)NULL);
! if ((begin.st_mtime == end.st_mtime) &&
! (strcmp(begin_sum, end_sum) == 0)) {
warnx("no changes made");
pw_error(NULL, 0, 0);
}
+ free(begin_sum);
+ free(end_sum);
if (verify(pw))
break;
pw_prompt();
--
Daniel Hagan Computer Science CSE
dhagan@cs.vt.edu http://www.cs.vt.edu/~dhagan/
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200001121600.IAA01959>
