]> andersk Git - openssh.git/commitdiff
- djm@cvs.openbsd.org 2004/10/29 22:53:56
authordtucker <dtucker>
Fri, 5 Nov 2004 09:38:03 +0000 (09:38 +0000)
committerdtucker <dtucker>
Fri, 5 Nov 2004 09:38:03 +0000 (09:38 +0000)
     [clientloop.c misc.h readpass.c ssh-agent.c]
     factor out common permission-asking code to separate function; ok markus@

ChangeLog
clientloop.c
misc.h
readpass.c
ssh-agent.c

index c973c9d39330d2776df8b9015553b90019e1cba9..221b1bb0e1223ec2c3ebf10aafe24941862531d9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -51,6 +51,9 @@
      were not being updated if they had changed after ~^Z suspends and SIGWINCH
      was not being processed unless the first connection had requested a tty;
      ok markus
+   - djm@cvs.openbsd.org 2004/10/29 22:53:56
+     [clientloop.c misc.h readpass.c ssh-agent.c]
+     factor out common permission-asking code to separate function; ok markus@
 
 20041102
  - (dtucker) [configure.ac includes.h] Bug #947: Fix compile error on HP-UX
index 009480ea1879dafbc27bdec2ef5ab0551a50c74c..d77337b826b277393e335b3f28008d8b09766e23 100644 (file)
@@ -59,7 +59,7 @@
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: clientloop.c,v 1.132 2004/10/29 21:47:15 djm Exp $");
+RCSID("$OpenBSD: clientloop.c,v 1.133 2004/10/29 22:53:56 djm Exp $");
 
 #include "ssh.h"
 #include "ssh1.h"
@@ -592,24 +592,9 @@ client_process_control(fd_set * readset)
        }
 
        allowed = 1;
-       if (options.control_master == 2) {
-               char *p, prompt[1024];
-
-               allowed = 0;
-               snprintf(prompt, sizeof(prompt),
-                   "Allow shared connection to %s? ", host);
-               p = read_passphrase(prompt, RP_USE_ASKPASS|RP_ALLOW_EOF);
-               if (p != NULL) {
-                       /*
-                        * Accept empty responses and responses consisting
-                        * of the word "yes" as affirmative.
-                        */
-                       if (*p == '\0' || *p == '\n' ||
-                           strcasecmp(p, "yes") == 0)
-                               allowed = 1;
-                       xfree(p);
-               }
-       }
+       if (options.control_master == 2)
+               allowed = ask_permission("Allow shared connection to %s? ",
+                   host);
 
        unset_nonblock(client_fd);
 
diff --git a/misc.h b/misc.h
index ec47a611d485c65c6d440152fdd60cb8a6fda4f2..0290a2d6488a31658858ac3999b66583b21fee4e 100644 (file)
--- a/misc.h
+++ b/misc.h
@@ -1,4 +1,4 @@
-/*     $OpenBSD: misc.h,v 1.17 2004/08/11 21:43:05 avsm Exp $  */
+/*     $OpenBSD: misc.h,v 1.18 2004/10/29 22:53:56 djm Exp $   */
 
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -46,3 +46,4 @@ char  *tilde_expand_filename(const char *, uid_t);
 #define RP_USE_ASKPASS         0x0008
 
 char   *read_passphrase(const char *, int);
+int     ask_permission(const char *, ...) __attribute__((format(printf, 1, 2)));
index eb4f6fdb6d903aa29b533e42b315b150a2f9a3ca..c2bacdcd48ea9a5fb6a59f067cb238ffae009b15 100644 (file)
@@ -23,7 +23,7 @@
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: readpass.c,v 1.30 2004/06/17 15:10:14 djm Exp $");
+RCSID("$OpenBSD: readpass.c,v 1.31 2004/10/29 22:53:56 djm Exp $");
 
 #include "xmalloc.h"
 #include "misc.h"
@@ -141,3 +141,29 @@ read_passphrase(const char *prompt, int flags)
        memset(buf, 'x', sizeof buf);
        return ret;
 }
+
+int
+ask_permission(const char *fmt, ...)
+{
+       va_list args;
+       char *p, prompt[1024];
+       int allowed = 0;
+
+       va_start(args, fmt);
+       vsnprintf(prompt, sizeof(prompt), fmt, args);
+       va_end(args);
+
+       p = read_passphrase(prompt, RP_USE_ASKPASS|RP_ALLOW_EOF);
+       if (p != NULL) {
+               /*
+                * Accept empty responses and responses consisting
+                * of the word "yes" as affirmative.
+                */
+               if (*p == '\0' || *p == '\n' ||
+                   strcasecmp(p, "yes") == 0)
+                       allowed = 1;
+               xfree(p);
+       }
+
+       return (allowed);
+}
index fffed134239c274cf5dc6d9965840cce68359789..dd7e22ad5ade39924351bd19f030e658f842309b 100644 (file)
@@ -35,7 +35,7 @@
 
 #include "includes.h"
 #include "openbsd-compat/sys-queue.h"
-RCSID("$OpenBSD: ssh-agent.c,v 1.121 2004/10/07 10:12:36 djm Exp $");
+RCSID("$OpenBSD: ssh-agent.c,v 1.122 2004/10/29 22:53:56 djm Exp $");
 
 #include <openssl/evp.h>
 #include <openssl/md5.h>
@@ -168,23 +168,15 @@ lookup_identity(Key *key, int version)
 static int
 confirm_key(Identity *id)
 {
-       char *p, prompt[1024];
+       char *p;
        int ret = -1;
 
        p = key_fingerprint(id->key, SSH_FP_MD5, SSH_FP_HEX);
-       snprintf(prompt, sizeof(prompt), "Allow use of key %s?\n"
-           "Key fingerprint %s.", id->comment, p);
+       if (ask_permission("Allow use of key %s?\nKey fingerprint %s.",
+           id->comment, p))
+               ret = 0;
        xfree(p);
-       p = read_passphrase(prompt, RP_ALLOW_EOF);
-       if (p != NULL) {
-               /*
-                * Accept empty responses and responses consisting
-                * of the word "yes" as affirmative.
-                */
-               if (*p == '\0' || *p == '\n' || strcasecmp(p, "yes") == 0)
-                       ret = 0;
-               xfree(p);
-       }
+
        return (ret);
 }
 
This page took 0.080705 seconds and 5 git commands to generate.