From b7dbb29e686e9dfb1a766d427007e69d4db044c2 Mon Sep 17 00:00:00 2001
From: Matt Johnston <matt@ucc.asn.au>
Date: Tue, 11 Jan 2005 16:17:03 +0000
Subject: [PATCH] Read "y/n" response for fingerprints from /dev/tty directly
 so that dbclient will work with scp.

--HG--
extra : convert_revision : 1ec067604618a314ad36464920f08c7113d09aa3
---
 CHANGES   |  3 +++
 cli-kex.c | 12 +++++++++++-
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/CHANGES b/CHANGES
index f2689c18..086758c6 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+- Read "y/n" response for fingerprints from /dev/tty directly so that dbclient
+  will work with scp.
+
 0.44 - Mon Jan 3 2005
 
 - SECURITY: Fix for PAM auth so that usernames are logged and conversation
diff --git a/cli-kex.c b/cli-kex.c
index 03a06702..40d4e957 100644
--- a/cli-kex.c
+++ b/cli-kex.c
@@ -115,13 +115,23 @@ void recv_msg_kexdh_reply() {
 static void ask_to_confirm(unsigned char* keyblob, unsigned int keybloblen) {
 
 	char* fp = NULL;
+	FILE *tty = NULL;
+	char response = 'z';
 
 	fp = sign_key_fingerprint(keyblob, keybloblen);
 	fprintf(stderr, "\nHost '%s' is not in the trusted hosts file.\n(fingerprint %s)\nDo you want to continue connecting? (y/n)\n", 
 			cli_opts.remotehost, 
 			fp);
 
-	if (getc(stdin) == 'y') {
+	tty = fopen(_PATH_TTY, "r");
+	if (tty) {
+		response = getc(tty);
+		fclose(tty);
+	} else {
+		response = getc(stdin);
+	}
+
+	if (response == 'y') {
 		m_free(fp);
 		return;
 	}
-- 
GitLab