Merged silc_1_0_branch to trunk.
[silc.git] / lib / silcutil / silcapputil.c
index 723ca37f777d26057bbac8777b92815c6315eb4a..a79ee597549e91a21c7ae838b3cb6335a64e8202 100644 (file)
@@ -175,19 +175,24 @@ New pair of keys will be created.  Please, answer to following questions.\n\
   }
 
   if (!pass) {
-    char *pass2 = NULL;
-    pass = silc_get_input("Private key passphrase: ", TRUE);
-    if (!pass) {
-      pass = strdup("");
-    } else {
-      while (TRUE) {
+    while (TRUE) {
+      char *pass2 = NULL;
+      pass = silc_get_input("Private key passphrase: ", TRUE);
+      if (!pass) {
+        pass = strdup("");
+       break;
+      } else {
+       bool match;
        printf("\n");
        pass2 = silc_get_input("Retype private key passphrase: ", TRUE);
-       if (!strcmp(pass, pass2))
+       if (!pass2)
+         pass2 = strdup("");
+       match = !strcmp(pass, pass2);
+       silc_free(pass2);
+       if (match)
          break;
-       fprintf(stderr, "\nPassphrases do not match");
+       fprintf(stderr, "\nPassphrases do not match\n\n");
       }
-      silc_free(pass2);
     }
   }
 
@@ -401,6 +406,8 @@ bool silc_change_private_key_passphrase(const char *prv_filename,
       while (TRUE) {
        printf("\n");
        pass2 = silc_get_input("Retype new passphrase: ", TRUE);
+       if (!pass2)
+         pass2 = strdup("");
        if (!strcmp(pass, pass2))
          break;
        fprintf(stderr, "\nPassphrases do not match");