-/*
- *
- *
- * Copyright (c) 1987-2009 by the citadel.org team
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
+// Copyright (c) 1987-2022 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.
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include <limits.h>
#include <dirent.h>
+#include "../server/citadel.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;
- write(chkpwd_write_pipe[1], &uid, sizeof(uid_t));
- write(chkpwd_write_pipe[1], pass, 256);
- read(chkpwd_read_pipe[0], buf, 4);
+ rv = write(chkpwd_write_pipe[1], &uid, sizeof(uid_t));
+ if (rv == -1) {
+ printf( "Communicatino with chkpwd broken: %s\n", strerror(errno));
+ return 0;
+ }
+ rv = write(chkpwd_write_pipe[1], pass, 256);
+ if (rv == -1) {
+ printf( "Communicatino with chkpwd broken: %s\n", strerror(errno));
+ return 0;
+ }
+ rv = read(chkpwd_read_pipe[0], buf, 4);
+ if (rv == -1) {
+ printf( "Communicatino with chkpwd broken: %s\n", strerror(errno));
+ return 0;
+ }
if (!strncmp(buf, "PASS", 4)) {
printf("pass\n");
return(1);
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();
}
}
-
int main(int argc, char **argv) {
char buf[256];
struct passwd *p;
int uid;
- char ctdldir[PATH_MAX]=CTDLDIR;
-
- calc_dirs_n_files(0,0,"", ctdldir, 0);
printf("\n\n ** host auth mode test utility **\n\n");
start_chkpwd_daemon();