Unverified Commit 320cec28 authored by Marcel Raad's avatar Marcel Raad
Browse files

ssh: move variable declaration to where it's used

This way, we need only one call to free.

Closes https://github.com/curl/curl/pull/3873
parent c92a4deb
Loading
Loading
Loading
Loading
+5 −8
Original line number Diff line number Diff line
@@ -733,18 +733,17 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)

      if((data->set.ssh_auth_types & CURLSSH_AUTH_PUBLICKEY) &&
         (strstr(sshc->authlist, "publickey") != NULL)) {
        char *home = NULL;
        bool out_of_memory = FALSE;

        sshc->rsa_pub = sshc->rsa = NULL;

        /* To ponder about: should really the lib be messing about with the
           HOME environment variable etc? */
        home = curl_getenv("HOME");

        if(data->set.str[STRING_SSH_PRIVATE_KEY])
          sshc->rsa = strdup(data->set.str[STRING_SSH_PRIVATE_KEY]);
        else {
          /* To ponder about: should really the lib be messing about with the
             HOME environment variable etc? */
          char *home = curl_getenv("HOME");

          /* If no private key file is specified, try some common paths. */
          if(home) {
            /* Try ~/.ssh first. */
@@ -760,6 +759,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
                Curl_safefree(sshc->rsa);
              }
            }
            free(home);
          }
          if(!out_of_memory && !sshc->rsa) {
            /* Nothing found; try the current dir. */
@@ -791,7 +791,6 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
        }

        if(out_of_memory || sshc->rsa == NULL) {
          free(home);
          Curl_safefree(sshc->rsa);
          Curl_safefree(sshc->rsa_pub);
          state(conn, SSH_SESSION_FREE);
@@ -803,8 +802,6 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
        if(!sshc->passphrase)
          sshc->passphrase = "";

        free(home);

        if(sshc->rsa_pub)
          infof(data, "Using SSH public key file '%s'\n", sshc->rsa_pub);
        infof(data, "Using SSH private key file '%s'\n", sshc->rsa);