Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 12 Jan 2000 05:50:01 -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:  <200001121350.FAA31156@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, jhb@freebsd.org
Subject: Re: bin/4238 - chpass time delay sensitivity [PATCH]
Date: Wed, 12 Jan 2000 08:45:03 -0500 (EST)

 On Tue, 11 Jan 2000, John Polstra wrote:
 
 > I can't decide whether you should be ridiculed mercilessly for this
 > disgusting hack, or hailed as a genuine genius. :-) I would rule
 > it out in an instant, except that the file's only a temporary file
 > anyway.  I guess it's OK, but don't tell anybody I said so.
 
 I would vote for the disgusting hack category myself :).  I was
 complaining to John Baldwin (jhb) about it, and he mentioned the
 work-around (I never would have thought of it, being too tied to my
 anti-disgusting-hack philosophy).  It seems harmless enough in this
 special case, but I won't take it personally if someone cans the patch.
 
 > Minor style nit: you should remove the redundant parentheses in the
 > gettimeofday() calls.
 
 Ok, taken care of.  Here's the updated diff (in context diff format even
 ;-))
 
 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 13:31:30
 ***************
 *** 39,44 ****
 --- 39,45 ----
   
   #include <sys/param.h>
   #include <sys/stat.h>
 + #include <sys/time.h>
   
   #include <ctype.h>
   #include <err.h>
 ***************
 *** 65,72 ****
 --- 66,84 ----
   	struct passwd *pw;
   {
   	struct stat begin, end;
 + 	struct timeval temp_time[2];
   
   	for (;;) {
 + 		/*
 + 		 * Avoid race condition when user edits file in under a 
 + 		 * second by back-dating file.
 + 		 */
 + 		gettimeofday(&temp_time[0], NULL);
 + 		gettimeofday(&temp_time[1], NULL);
 + 		temp_time[1].tv_sec--;
 + 		if (utimes(tempname, temp_time))
 + 			pw_error(tempname, 1, 1);
 + 
   		if (stat(tempname, &begin))
   			pw_error(tempname, 1, 1);
   		pw_edit(1);
 
 -- 
 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?200001121350.FAA31156>