version 1.4, 1998/06/21 22:13:59 |
version 1.5, 1998/07/13 02:11:35 |
|
|
|
|
/* Add O_CREAT if you want to create failedlogin if it doesn't exist */ |
/* Add O_CREAT if you want to create failedlogin if it doesn't exist */ |
if ((fd = open(_PATH_FAILEDLOGIN, O_RDWR, S_IREAD|S_IWRITE)) >= 0) { |
if ((fd = open(_PATH_FAILEDLOGIN, O_RDWR, S_IREAD|S_IWRITE)) >= 0) { |
(void)lseek(fd, (off_t)uid * sizeof(failedlogin), L_SET); |
(void)lseek(fd, (off_t)uid * sizeof(failedlogin), SEEK_SET); |
|
|
/* Read in last bad login so can get the count */ |
/* Read in last bad login so can get the count */ |
if (read(fd, (char *)&failedlogin, sizeof(failedlogin)) != |
if (read(fd, (char *)&failedlogin, sizeof(failedlogin)) != |
sizeof(failedlogin) || failedlogin.bl_time == 0) |
sizeof(failedlogin) || failedlogin.bl_time == 0) |
memset((void *)&failedlogin, 0, sizeof(failedlogin)); |
memset((void *)&failedlogin, 0, sizeof(failedlogin)); |
|
|
(void)lseek(fd, (off_t)uid * sizeof(failedlogin), L_SET); |
(void)lseek(fd, (off_t)uid * sizeof(failedlogin), SEEK_SET); |
/* Increment count of bad logins */ |
/* Increment count of bad logins */ |
++failedlogin.count; |
++failedlogin.count; |
(void)time(&failedlogin.bl_time); |
(void)time(&failedlogin.bl_time); |
|
|
(void)memset((void *)&failedlogin, 0, sizeof(failedlogin)); |
(void)memset((void *)&failedlogin, 0, sizeof(failedlogin)); |
|
|
if ((fd = open(_PATH_FAILEDLOGIN, O_RDWR, 0)) >= 0) { |
if ((fd = open(_PATH_FAILEDLOGIN, O_RDWR, 0)) >= 0) { |
(void)lseek(fd, (off_t)uid * sizeof(failedlogin), L_SET); |
(void)lseek(fd, (off_t)uid * sizeof(failedlogin), SEEK_SET); |
if (read(fd, (char *)&failedlogin, sizeof(failedlogin)) == |
if (read(fd, (char *)&failedlogin, sizeof(failedlogin)) == |
sizeof(failedlogin) && failedlogin.count > 0 ) { |
sizeof(failedlogin) && failedlogin.count > 0 ) { |
/* There was a bad login */ |
/* There was a bad login */ |
|
|
|
|
/* Reset since this is a good login and write record */ |
/* Reset since this is a good login and write record */ |
failedlogin.count = 0; |
failedlogin.count = 0; |
(void)lseek(fd, (off_t)uid * sizeof(failedlogin), L_SET); |
(void)lseek(fd, (off_t)uid * sizeof(failedlogin), |
(void)write(fd, (char *)&failedlogin, sizeof(failedlogin)); |
SEEK_SET); |
|
(void)write(fd, (char *)&failedlogin, |
|
sizeof(failedlogin)); |
} |
} |
(void)close(fd); |
(void)close(fd); |
} |
} |