patch from tito: consolidate delay functions as bb_do_delay()
This commit is contained in:
parent
251161f75c
commit
84cb76733f
@ -355,7 +355,7 @@ extern const char * const bb_default_login_shell;
|
|||||||
#define DEFAULT_SHELL_SHORT_NAME (bb_default_login_shell+6)
|
#define DEFAULT_SHELL_SHORT_NAME (bb_default_login_shell+6)
|
||||||
|
|
||||||
|
|
||||||
extern const char bb_path_mtab_file[];
|
extern char bb_path_mtab_file[];
|
||||||
|
|
||||||
extern int bb_default_error_retval;
|
extern int bb_default_error_retval;
|
||||||
|
|
||||||
@ -419,6 +419,7 @@ extern size_t bb_strlen(const char *string);
|
|||||||
char *bb_xasprintf(const char *format, ...) __attribute__ ((format (printf, 1, 2)));
|
char *bb_xasprintf(const char *format, ...) __attribute__ ((format (printf, 1, 2)));
|
||||||
|
|
||||||
#define FAIL_DELAY 3
|
#define FAIL_DELAY 3
|
||||||
|
extern void bb_do_delay(int seconds);
|
||||||
extern void change_identity ( const struct passwd *pw );
|
extern void change_identity ( const struct passwd *pw );
|
||||||
extern const char *change_identity_e2str ( const struct passwd *pw );
|
extern const char *change_identity_e2str ( const struct passwd *pw );
|
||||||
extern void run_shell ( const char *shell, int loginshell, const char *command, const char **additional_args);
|
extern void run_shell ( const char *shell, int loginshell, const char *command, const char **additional_args);
|
||||||
|
@ -34,7 +34,7 @@ LIBBB_SRC-y:= \
|
|||||||
getopt_ulflags.c default_error_retval.c wfopen_input.c speed_table.c \
|
getopt_ulflags.c default_error_retval.c wfopen_input.c speed_table.c \
|
||||||
perror_nomsg_and_die.c perror_nomsg.c skip_whitespace.c bb_askpass.c \
|
perror_nomsg_and_die.c perror_nomsg.c skip_whitespace.c bb_askpass.c \
|
||||||
warn_ignoring_args.c concat_subpath_file.c vfork_daemon_rexec.c \
|
warn_ignoring_args.c concat_subpath_file.c vfork_daemon_rexec.c \
|
||||||
bb_echo.c
|
bb_echo.c bb_do_delay.c
|
||||||
|
|
||||||
LIBBB_SRC-$(CONFIG_FEATURE_SHADOWPASSWDS)+= pwd2spwd.c
|
LIBBB_SRC-$(CONFIG_FEATURE_SHADOWPASSWDS)+= pwd2spwd.c
|
||||||
|
|
||||||
|
31
libbb/bb_do_delay.c
Normal file
31
libbb/bb_do_delay.c
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
/* vi: set sw=4 ts=4: */
|
||||||
|
/*
|
||||||
|
* Busybox utility routines.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2005 by Tito Ragusa <tito-wolit@tiscali.it>
|
||||||
|
*
|
||||||
|
* Licensed under the GPL v2, see the file LICENSE in this tarball.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <time.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
void bb_do_delay(int seconds)
|
||||||
|
{
|
||||||
|
time_t start, now;
|
||||||
|
|
||||||
|
time(&start);
|
||||||
|
now = start;
|
||||||
|
while (difftime(now, start) < seconds) {
|
||||||
|
sleep(seconds);
|
||||||
|
time(&now);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Local Variables:
|
||||||
|
c-file-style: "linux"
|
||||||
|
c-basic-offset: 4
|
||||||
|
tab-width: 4
|
||||||
|
End:
|
||||||
|
*/
|
@ -198,17 +198,7 @@ auth_ok:
|
|||||||
if ( !failed)
|
if ( !failed)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
{ // delay next try
|
bb_do_delay(FAIL_DELAY);
|
||||||
time_t start, now;
|
|
||||||
|
|
||||||
time ( &start );
|
|
||||||
now = start;
|
|
||||||
while ( difftime ( now, start ) < FAIL_DELAY) {
|
|
||||||
sleep ( FAIL_DELAY );
|
|
||||||
time ( &now );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
puts("Login incorrect");
|
puts("Login incorrect");
|
||||||
username[0] = 0;
|
username[0] = 0;
|
||||||
if ( ++count == 3 ) {
|
if ( ++count == 3 ) {
|
||||||
|
@ -323,7 +323,6 @@ static int new_password(const struct passwd *pw, int amroot, int algo)
|
|||||||
char *cp;
|
char *cp;
|
||||||
char orig[200];
|
char orig[200];
|
||||||
char pass[200];
|
char pass[200];
|
||||||
time_t start, now;
|
|
||||||
|
|
||||||
if (!amroot && crypt_passwd[0]) {
|
if (!amroot && crypt_passwd[0]) {
|
||||||
if (!(clear = bb_askpass(0, "Old password:"))) {
|
if (!(clear = bb_askpass(0, "Old password:"))) {
|
||||||
@ -334,12 +333,7 @@ static int new_password(const struct passwd *pw, int amroot, int algo)
|
|||||||
if (strcmp(cipher, crypt_passwd) != 0) {
|
if (strcmp(cipher, crypt_passwd) != 0) {
|
||||||
syslog(LOG_WARNING, "incorrect password for `%s'",
|
syslog(LOG_WARNING, "incorrect password for `%s'",
|
||||||
pw->pw_name);
|
pw->pw_name);
|
||||||
time(&start);
|
bb_do_delay(FAIL_DELAY);
|
||||||
now = start;
|
|
||||||
while (difftime(now, start) < FAIL_DELAY) {
|
|
||||||
sleep(FAIL_DELAY);
|
|
||||||
time(&now);
|
|
||||||
}
|
|
||||||
fprintf(stderr, "Incorrect password.\n");
|
fprintf(stderr, "Incorrect password.\n");
|
||||||
/* return -1; */
|
/* return -1; */
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -58,7 +58,6 @@ extern int sulogin_main(int argc, char **argv)
|
|||||||
|
|
||||||
struct passwd pwent;
|
struct passwd pwent;
|
||||||
struct passwd *pwd;
|
struct passwd *pwd;
|
||||||
time_t start, now;
|
|
||||||
const char * const *p;
|
const char * const *p;
|
||||||
#ifdef CONFIG_FEATURE_SHADOWPASSWDS
|
#ifdef CONFIG_FEATURE_SHADOWPASSWDS
|
||||||
struct spwd *spwd = NULL;
|
struct spwd *spwd = NULL;
|
||||||
@ -140,12 +139,7 @@ extern int sulogin_main(int argc, char **argv)
|
|||||||
if (strcmp(pw_encrypt(pass, pwent.pw_passwd), pwent.pw_passwd) == 0) {
|
if (strcmp(pw_encrypt(pass, pwent.pw_passwd), pwent.pw_passwd) == 0) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
time(&start);
|
bb_do_delay(FAIL_DELAY);
|
||||||
now = start;
|
|
||||||
while (difftime(now, start) < FAIL_DELAY) {
|
|
||||||
sleep(FAIL_DELAY);
|
|
||||||
time(&now);
|
|
||||||
}
|
|
||||||
puts("Login incorrect");
|
puts("Login incorrect");
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
syslog(LOG_WARNING, "Incorrect root password\n");
|
syslog(LOG_WARNING, "Incorrect root password\n");
|
||||||
|
@ -135,7 +135,7 @@ extern int vlock_main(int argc, char **argv)
|
|||||||
if (correct_password (pw)) {
|
if (correct_password (pw)) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
sleep(10);
|
bb_do_delay(FAIL_DELAY);
|
||||||
puts("Password incorrect.");
|
puts("Password incorrect.");
|
||||||
} while (1);
|
} while (1);
|
||||||
restore_terminal();
|
restore_terminal();
|
||||||
|
Loading…
Reference in New Issue
Block a user