From 97c26c1924b076ef23ebe4381558e8aa025712b2 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 16:54:37 +0200 Subject: Adding upstream version 1:4.13+dfsg1. Signed-off-by: Daniel Baumann --- lib/lockpw.c | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 lib/lockpw.c (limited to 'lib/lockpw.c') diff --git a/lib/lockpw.c b/lib/lockpw.c new file mode 100644 index 0000000..aaa317f --- /dev/null +++ b/lib/lockpw.c @@ -0,0 +1,85 @@ +/* + * SPDX-FileCopyrightText: 1992 , Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2005 , Tomasz Kłoczko + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ifndef HAVE_LCKPWDF + +#ident "$Id$" + +#include "prototypes.h" +#include "defines.h" +#include "pwio.h" +#include "shadowio.h" +/* + * lckpwdf - lock the password files + */ +int lckpwdf (void) +{ + int i; + + /* + * We have 15 seconds to lock the whole mess + */ + + for (i = 0; i < 15; i++) + 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. + */ + + for (; i < 15; i++) + 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 + */ + +int ulckpwdf (void) +{ + + /* + * Unlock both files. + */ + + return (pw_unlock () && spw_unlock ())? 0 : -1; +} +#else +extern int errno; /* warning: ANSI C forbids an empty source file */ +#endif -- cgit v1.2.3