2007-10-07 17:14:02 +05:30
|
|
|
/*
|
2021-12-05 21:05:27 +05:30
|
|
|
* SPDX-FileCopyrightText: 1992 , Julianne Frances Haugh
|
|
|
|
* SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz
|
|
|
|
* SPDX-FileCopyrightText: 2005 , Tomasz Kłoczko
|
2007-10-07 17:14:02 +05:30
|
|
|
*
|
2021-12-05 21:05:27 +05:30
|
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
2007-10-07 17:14:02 +05:30
|
|
|
*/
|
|
|
|
|
|
|
|
#include <config.h>
|
|
|
|
|
|
|
|
#ifndef HAVE_LCKPWDF
|
|
|
|
|
2007-11-11 05:16:11 +05:30
|
|
|
#ident "$Id$"
|
2007-10-07 17:17:01 +05:30
|
|
|
|
2007-10-07 17:14:02 +05:30
|
|
|
#include "prototypes.h"
|
|
|
|
#include "defines.h"
|
|
|
|
#include "pwio.h"
|
|
|
|
#include "shadowio.h"
|
|
|
|
/*
|
|
|
|
* lckpwdf - lock the password files
|
|
|
|
*/
|
2007-10-07 17:16:07 +05:30
|
|
|
int lckpwdf (void)
|
2007-10-07 17:14:02 +05:30
|
|
|
{
|
2007-10-07 17:16:07 +05:30
|
|
|
int i;
|
2007-10-07 17:14:02 +05:30
|
|
|
|
|
|
|
/*
|
|
|
|
* We have 15 seconds to lock the whole mess
|
|
|
|
*/
|
|
|
|
|
2007-10-07 17:16:07 +05:30
|
|
|
for (i = 0; i < 15; i++)
|
2007-10-07 17:14:02 +05:30
|
|
|
if (pw_lock ())
|
|
|
|
break;
|
|
|
|
else
|
|
|
|
sleep (1);
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Did we run out of time?
|
|
|
|
*/
|
|
|
|
|
|
|
|
if (i == 15)
|
|
|
|
return -1;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Nope, use any remaining time to lock the shadow password
|
|
|
|
* file.
|
|
|
|
*/
|
|
|
|
|
2007-10-07 17:16:07 +05:30
|
|
|
for (; i < 15; i++)
|
2007-10-07 17:14:02 +05:30
|
|
|
if (spw_lock ())
|
|
|
|
break;
|
|
|
|
else
|
|
|
|
sleep (1);
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Out of time yet?
|
|
|
|
*/
|
|
|
|
|
|
|
|
if (i == 15) {
|
|
|
|
pw_unlock ();
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Nope - and both files are now locked.
|
|
|
|
*/
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* ulckpwdf - unlock the password files
|
|
|
|
*/
|
|
|
|
|
2007-10-07 17:16:07 +05:30
|
|
|
int ulckpwdf (void)
|
2007-10-07 17:14:02 +05:30
|
|
|
{
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Unlock both files.
|
|
|
|
*/
|
|
|
|
|
2007-10-07 17:16:07 +05:30
|
|
|
return (pw_unlock () && spw_unlock ())? 0 : -1;
|
2007-10-07 17:14:02 +05:30
|
|
|
}
|
|
|
|
#else
|
2007-10-07 17:16:07 +05:30
|
|
|
extern int errno; /* warning: ANSI C forbids an empty source file */
|
2007-10-07 17:14:02 +05:30
|
|
|
#endif
|