]> code.citadel.org Git - citadel.git/blobdiff - citadel/chkpw.c
arrgh
[citadel.git] / citadel / chkpw.c
index c2cc5cd65965b20dae01877b026032d86dc6ae32..9691b734336376dd11a7eacf92422d371d70055a 100644 (file)
@@ -1,5 +1,13 @@
 /* 
+ * Copyright (c) 1987-2021 by the citadel.org team
  *
+ *  This program is open source software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 3.
+ *
+ *  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.
  */
 
 #include <errno.h>
@@ -32,11 +40,24 @@ int chkpwd_read_pipe[2];
 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);
@@ -94,8 +115,6 @@ int main(int argc, char **argv) {
        int uid;
        char ctdldir[PATH_MAX]=CTDLDIR;
        
-       calc_dirs_n_files(0,0,"", ctdldir);
-       
        printf("\n\n ** host auth mode test utility **\n\n");
        start_chkpwd_daemon();
 
@@ -105,7 +124,8 @@ int main(int argc, char **argv) {
        }
        while(1) {
                printf("\n\nUsername: ");
-               gets(buf);
+               fgets(buf, sizeof buf, stdin);
+               buf[strlen(buf)-1] = 0;
                p = getpwnam(buf);
                if (p == NULL) {
                        printf("Not found\n");
@@ -114,7 +134,8 @@ int main(int argc, char **argv) {
                        uid = p->pw_uid;
                        printf("     uid: %d\n", uid);
                        printf("Password: ");
-                       gets(buf);
+                       fgets(buf, sizeof buf, stdin);
+                       buf[strlen(buf)-1] = 0;
                        validpw(uid, buf);
                }
        }