OSDN Git Service

Don\'t chmod /dev/ptmx when allocating a pty on Android. am: 0199da83f6
[android-x86/external-openssh.git] / auth-pam.c
index 675006e..d789bad 100644 (file)
@@ -412,10 +412,9 @@ sshpam_thread_conv(int n, sshpam_const struct pam_message **msg,
 
  fail:
        for(i = 0; i < n; i++) {
-               if (reply[i].resp != NULL)
-                       xfree(reply[i].resp);
+               free(reply[i].resp);
        }
-       xfree(reply);
+       free(reply);
        buffer_free(&buffer);
        return (PAM_CONV_ERR);
 }
@@ -439,8 +438,10 @@ sshpam_thread(void *ctxtp)
        const char **ptr_pam_user = &pam_user;
        char *tz = getenv("TZ");
 
-       pam_get_item(sshpam_handle, PAM_USER,
+       sshpam_err = pam_get_item(sshpam_handle, PAM_USER,
            (sshpam_const void **)ptr_pam_user);
+       if (sshpam_err != PAM_SUCCESS)
+               goto auth_fail;
 
        environ[0] = NULL;
        if (tz != NULL)
@@ -586,10 +587,9 @@ sshpam_store_conv(int n, sshpam_const struct pam_message **msg,
 
  fail:
        for(i = 0; i < n; i++) {
-               if (reply[i].resp != NULL)
-                       xfree(reply[i].resp);
+               free(reply[i].resp);
        }
-       xfree(reply);
+       free(reply);
        return (PAM_CONV_ERR);
 }
 
@@ -693,7 +693,7 @@ sshpam_init_ctx(Authctxt *authctxt)
        /* Start the authentication thread */
        if (socketpair(AF_UNIX, SOCK_STREAM, PF_UNSPEC, socks) == -1) {
                error("PAM: failed create sockets: %s", strerror(errno));
-               xfree(ctxt);
+               free(ctxt);
                return (NULL);
        }
        ctxt->pam_psock = socks[0];
@@ -703,7 +703,7 @@ sshpam_init_ctx(Authctxt *authctxt)
                    strerror(errno));
                close(socks[0]);
                close(socks[1]);
-               xfree(ctxt);
+               free(ctxt);
                return (NULL);
        }
        cleanup_ctxt = ctxt;
@@ -742,7 +742,7 @@ sshpam_query(void *ctx, char **name, char **info,
                        strlcpy(**prompts + plen, msg, len - plen);
                        plen += mlen;
                        **echo_on = (type == PAM_PROMPT_ECHO_ON);
-                       xfree(msg);
+                       free(msg);
                        return (0);
                case PAM_ERROR_MSG:
                case PAM_TEXT_INFO:
@@ -753,7 +753,7 @@ sshpam_query(void *ctx, char **name, char **info,
                        plen += mlen;
                        strlcat(**prompts + plen, "\n", len - plen);
                        plen++;
-                       xfree(msg);
+                       free(msg);
                        break;
                case PAM_ACCT_EXPIRED:
                        sshpam_account_status = 0;
@@ -766,7 +766,7 @@ sshpam_query(void *ctx, char **name, char **info,
                                *num = 0;
                                **echo_on = 0;
                                ctxt->pam_done = -1;
-                               xfree(msg);
+                               free(msg);
                                return 0;
                        }
                        /* FALLTHROUGH */
@@ -776,7 +776,7 @@ sshpam_query(void *ctx, char **name, char **info,
                                debug("PAM: %s", **prompts);
                                buffer_append(&loginmsg, **prompts,
                                    strlen(**prompts));
-                               xfree(**prompts);
+                               free(**prompts);
                                **prompts = NULL;
                        }
                        if (type == PAM_SUCCESS) {
@@ -790,7 +790,7 @@ sshpam_query(void *ctx, char **name, char **info,
                                *num = 0;
                                **echo_on = 0;
                                ctxt->pam_done = 1;
-                               xfree(msg);
+                               free(msg);
                                return (0);
                        }
                        error("PAM: %s for %s%.100s from %.100s", msg,
@@ -801,7 +801,7 @@ sshpam_query(void *ctx, char **name, char **info,
                default:
                        *num = 0;
                        **echo_on = 0;
-                       xfree(msg);
+                       free(msg);
                        ctxt->pam_done = -1;
                        return (-1);
                }
@@ -852,7 +852,7 @@ sshpam_free_ctx(void *ctxtp)
 
        debug3("PAM: %s entering", __func__);
        sshpam_thread_cleanup();
-       xfree(ctxt);
+       free(ctxt);
        /*
         * We don't call sshpam_cleanup() here because we may need the PAM
         * handle at a later stage, e.g. when setting up a session.  It's
@@ -1006,10 +1006,9 @@ sshpam_tty_conv(int n, sshpam_const struct pam_message **msg,
 
  fail:
        for(i = 0; i < n; i++) {
-               if (reply[i].resp != NULL)
-                       xfree(reply[i].resp);
+               free(reply[i].resp);
        }
-       xfree(reply);
+       free(reply);
        return (PAM_CONV_ERR);
 }
 
@@ -1081,7 +1080,7 @@ do_pam_putenv(char *name, char *value)
 
        snprintf(compound, len, "%s=%s", name, value);
        ret = pam_putenv(sshpam_handle, compound);
-       xfree(compound);
+       free(compound);
 #endif
 
        return (ret);
@@ -1108,8 +1107,8 @@ free_pam_environment(char **env)
                return;
 
        for (envp = env; *envp; envp++)
-               xfree(*envp);
-       xfree(env);
+               free(*envp);
+       free(env);
 }
 
 /*
@@ -1165,10 +1164,9 @@ sshpam_passwd_conv(int n, sshpam_const struct pam_message **msg,
 
  fail:
        for(i = 0; i < n; i++) {
-               if (reply[i].resp != NULL)
-                       xfree(reply[i].resp);
+               free(reply[i].resp);
        }
-       xfree(reply);
+       free(reply);
        return (PAM_CONV_ERR);
 }