-//
-// Copyright (c) 1987-2022 by the citadel.org team
+// Copyright (c) 1987-2023 by the citadel.org team
//
// This program is open source software. Use, duplication, or disclosure
// is subject to the terms of the GNU General Public License, version 3.
-// The program is distributed without any warranty, expressed or implied.
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include <limits.h>
#include <dirent.h>
+#include "../server/citadel_defs.h"
+#include "../server/server.h"
+#include "../server/sysdep.h"
+#include "../server/citadel_dirs.h"
-
-#include "citadel.h"
-#include "sysdep.h"
-#include "citadel_dirs.h"
-/* These pipes are used to talk to the chkpwd daemon, which is forked during startup */
+// These pipes are used to talk to the chkpwd daemon, which is forked during startup
int chkpwd_write_pipe[2];
int chkpwd_read_pipe[2];
-/*
- * Validate a password on the host unix system by talking to the chkpwd daemon
- */
-static int validpw(uid_t uid, const char *pass)
-{
+// Validate a password on the host unix system by talking to the chkpwd daemon
+static int validpw(uid_t uid, const char *pass) {
char buf[256];
int rv;
return 0;
}
-/*
- * Start up the chkpwd daemon so validpw() has something to talk to
- */
+
+// Start up the chkpwd daemon so validpw() has something to talk to
void start_chkpwd_daemon(void) {
pid_t chkpwd_pid;
struct stat filestats;
printf("Starting chkpwd daemon for host authentication mode\n");
- if ((stat(file_chkpwd, &filestats)==-1) ||
- (filestats.st_size==0)){
+ if ((stat(file_chkpwd, &filestats)==-1) || (filestats.st_size==0)){
printf("didn't find chkpwd daemon in %s: %s\n", file_chkpwd, strerror(errno));
- abort();
+ exit(1);
}
if (pipe(chkpwd_write_pipe) != 0) {
printf("Unable to create pipe for chkpwd daemon: %s\n", strerror(errno));
- abort();
+ exit(2);
}
if (pipe(chkpwd_read_pipe) != 0) {
printf("Unable to create pipe for chkpwd daemon: %s\n", strerror(errno));
- abort();
+ exit(3);
}
chkpwd_pid = fork();
if (chkpwd_pid < 0) {
printf("Unable to fork chkpwd daemon: %s\n", strerror(errno));
- abort();
+ exit(4);
}
if (chkpwd_pid == 0) {
dup2(chkpwd_write_pipe[0], 0);
for (i=2; i<256; ++i) close(i);
execl(file_chkpwd, file_chkpwd, NULL);
printf("Unable to exec chkpwd daemon: %s\n", strerror(errno));
- abort();
exit(errno);
}
}
-
int main(int argc, char **argv) {
char buf[256];
struct passwd *p;