]> code.citadel.org Git - citadel.git/blobdiff - citadel/utils/chkpw.c
I can't see the screen with my sunglasses on
[citadel.git] / citadel / utils / chkpw.c
index ce5faaff81d4db537a3141d66744564c5a5a3180..620613b2309065770aa1d494d96513ebe4521649 100644 (file)
@@ -1,22 +1,7 @@
-/* 
- *
- *
- * 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);
@@ -62,9 +56,8 @@ static int validpw(uid_t uid, const char *pass)
        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;
@@ -72,8 +65,7 @@ void start_chkpwd_daemon(void) {
 
        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();
        }
@@ -103,14 +95,10 @@ void start_chkpwd_daemon(void) {
 }
 
 
-
 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();