pam: avoid warning messages 98/12298/4
authorMarcio Barbosa <mbarbosa@sinenomine.net>
Wed, 6 Jul 2016 12:56:26 +0000 (09:56 -0300)
committerBenjamin Kaduk <kaduk@mit.edu>
Sun, 17 Jul 2016 04:33:10 +0000 (00:33 -0400)
In order to avoid some warning messages, do not
ignore the code returned by some functions.

Change-Id: Ie01fa98b54010d566fb5b980b001d58989ef9a67
Reviewed-on: https://gerrit.openafs.org/12298
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
Tested-by: BuildBot <buildbot@rampaginggeek.com>

src/pam/afs_util.c
src/pam/test_pam.c

index 08cc0fd..1560a6f 100644 (file)
@@ -83,7 +83,8 @@ do_klog(const char *user, const char *password, const char *lifetime,
     char *argv[32];
     int argc = 0;
     char *klog_prog;
-    int ret = 1;
+    int ret = 1;       /* ret different than zero means failure */
+    int fd, nbytes;
 
 #if defined(AFS_KERBEROS_ENV)
     klog_prog = KLOGKRB;
@@ -124,11 +125,22 @@ do_klog(const char *user, const char *password, const char *lifetime,
        goto out;
     case (0):                  /* child */
        close(0);
-       dup(pipedes[0]);
+       fd = dup(pipedes[0]);
        close(pipedes[0]);
+       if (fd == -1) {
+           syslog(LOG_ERR, "do_klog: dup failed for pipedes[0]: %s",
+                  strerror(errno));
+           exit(1);
+       }
        close(1);
-       dup(pipedes[1]);
+       fd = dup(pipedes[1]);
        close(pipedes[1]);
+       if (fd == -1) {
+           close(0);
+           syslog(LOG_ERR, "do_klog: dup failed for pipedes[1]: %s",
+                  strerror(errno));
+           exit(1);
+       }
        execv(klog_prog, argv);
        /* notreached */
        syslog(LOG_ERR, "execv failed: %s", strerror(errno));
@@ -136,8 +148,18 @@ do_klog(const char *user, const char *password, const char *lifetime,
        close(1);
        goto out;
     default:
-       write(pipedes[1], password, strlen(password));
-       write(pipedes[1], "\n", 1);
+       nbytes = write(pipedes[1], password, strlen(password));
+       if (nbytes == -1) {
+           syslog(LOG_ERR,
+                  "do_klog: could not write the password into the input of the pipe: %s",
+                  strerror(errno));
+       }
+       nbytes = write(pipedes[1], "\n", 1);
+       if (nbytes == -1) {
+           syslog(LOG_ERR,
+                  "do_klog: could not write the end-of-line code into the input of the pipe: %s",
+                  strerror(errno));
+       }
        close(pipedes[0]);
        close(pipedes[1]);
        if (pid != wait(&status))
index e3004a5..1133c25 100644 (file)
@@ -95,7 +95,12 @@ main(int argc, char *argv[])
 
     putenv((char *)new_envstring);
     putenv((char *)new_homestring);
-    chdir("/tmp");
+
+    if ((retcode = chdir("/tmp")) != 0) {
+       fprintf(stderr, "chdir returned %d.\n", retcode);
+       exit(1);
+    }
+
     printf("Type exit to back out.\n");
     return execl("/bin/csh", "/bin/csh", NULL);
 }
@@ -135,7 +140,10 @@ my_conv(int num_msg, PAM_CONST struct pam_message **msg, struct pam_response **r
            fputs(m->msg, stdout);
            if (r) {
                r->resp = malloc(PAM_MAX_RESP_SIZE);
-               fgets(r->resp, PAM_MAX_RESP_SIZE, stdin);
+               if (fgets(r->resp, PAM_MAX_RESP_SIZE, stdin) == NULL) {
+                   fprintf(stderr, "fgets did not work as expected\n");
+                   exit(1);
+               }
                r->resp[PAM_MAX_RESP_SIZE - 1] = '\0';
                p = &r->resp[strlen(r->resp) - 1];
                while (*p == '\n' && p >= r->resp)