On fre, 2007-09-07 at 09:50 +0800, Adrian Chadd wrote:
> On Thu, Sep 06, 2007, Henrik Nordstrom wrote:
>
> > With a 2 seconds or so margin on the stat time you should not need to
> > care. Also solves the double password change within the same second
> > problem... but yes checking the size as well do not hurt.
> >
> > Patch adding a 2 seconds margin to the stat time is attached.
>
> Yup, sounds good. But!
>
> > if (stat(argv[1], &sb) == 0) {
> > if (sb.st_mtime != change_time) {
> > - read_passwd_file(argv[1]);
> > - change_time = sb.st_mtime;
> > + int diff = time(NULL) - sb.st_mtime;
> > + if (diff > 2 || diff < 0) {
> > + read_passwd_file(argv[1]);
> > + change_time = sb.st_mtime;
> > + }
>
> Could you explain to me the intent of this? The 2 second time check only
> kicks in if the file's already been read because the mtime has changed.
> Thats just possibly reading the file twice in quick succession if its been
> < 2 seconds since it last changed? I can't see how that fixes the race
> condition.
It's a filter ignoring the file change time if it's less than 2 seconds
ago, only rereading the file if it's changed since last read and not
modified in the last 2 seconds..
sb.st_mtime is from the stat() call.
change_time is from when the file was last read.
Regards
Henrik
This archive was generated by hypermail pre-2.1.9 : Mon Oct 01 2007 - 12:00:02 MDT