summaryrefslogtreecommitdiffstats
path: root/obsolete-buildroot/sources/openwrt/ipkg/dropbear/dropbear.patch
blob: bb8de6ba2cd84ace88725912a82fabdc937be55e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
Only in dropbear-0.44test2: .configured
diff -r -u dropbear-0.44test2-old/cli-session.c dropbear-0.44test2/cli-session.c
--- dropbear-0.44test2-old/cli-session.c	2004-08-17 21:22:59.000000000 +1000
+++ dropbear-0.44test2/cli-session.c	2004-08-19 21:50:59.000000000 +1000
@@ -112,9 +112,14 @@
 	cli_ses.tty_raw_mode = 0;
 	cli_ses.winchange = 0;
 
+	/* We store stdin's flags, so we can set them back on exit (otherwise
+	 * busybox's ash isn't happy */
+	cli_ses.stdincopy = dup(STDIN_FILENO);
+	cli_ses.stdinflags = fcntl(STDIN_FILENO, F_GETFL, 0);
+
 	/* Auth */
 	cli_ses.lastpubkey = NULL;
-	cli_ses.lastauthtype = NULL;
+	cli_ses.lastauthtype = 0;
 
 	/* For printing "remote host closed" for the user */
 	ses.remoteclosed = cli_remoteclosed;
@@ -240,6 +245,12 @@
 	if (!sessinitdone) {
 		return;
 	}
+
+	/* Set stdin back to non-blocking - busybox ash dies nastily
+	 * if we don't revert the flags */
+	TRACE(("close stdincopy = %d", cli_ses.stdincopy));
+	fcntl(cli_ses.stdincopy, F_SETFL, cli_ses.stdinflags);
+
 	cli_tty_cleanup();
 
 }
diff -r -u dropbear-0.44test2-old/options.h dropbear-0.44test2/options.h
--- dropbear-0.44test2-old/options.h	2004-08-17 21:23:00.000000000 +1000
+++ dropbear-0.44test2/options.h	2004-08-20 13:40:44.000000000 +1000
@@ -87,7 +87,7 @@
  * for hostkey as well as for verifying signatures with pubkey auth.
  * Removing either of these won't save very much space.
  * SSH2 RFC Draft requires dss, recommends rsa */
-#define DROPBEAR_RSA
+//#define DROPBEAR_RSA
 #define DROPBEAR_DSS
 
 /* Define DSS_PROTOK to use PuTTY's method of generating the value k for dss,
diff -r -u dropbear-0.44test2-old/session.h dropbear-0.44test2/session.h
--- dropbear-0.44test2-old/session.h	2004-08-17 21:23:00.000000000 +1000
+++ dropbear-0.44test2/session.h	2004-08-19 21:50:59.000000000 +1000
@@ -212,6 +212,8 @@
 
 	int tty_raw_mode; /* Whether we're in raw mode (and have to clean up) */
 	struct termios saved_tio;
+	int stdincopy;
+	int stdinflags;
 
 	int winchange; /* Set to 1 when a windowchange signal happens */
 
diff -r -u dropbear-0.44test2-old/svr-auth.c dropbear-0.44test2/svr-auth.c
--- dropbear-0.44test2-old/svr-auth.c	2004-08-17 21:23:00.000000000 +1000
+++ dropbear-0.44test2/svr-auth.c	2004-08-20 15:06:15.000000000 +1000
@@ -102,6 +102,8 @@
 		return;
 	}
 
+	ses.connecttimeout = 0;
+
 	/* send the banner if it exists, it will only exist once */
 	if (svr_opts.banner) {
 		send_msg_userauth_banner();
diff -r -u dropbear-0.44test2-old/svr-runopts.c dropbear-0.44test2/svr-runopts.c
--- dropbear-0.44test2-old/svr-runopts.c	2004-08-17 21:23:00.000000000 +1000
+++ dropbear-0.44test2/svr-runopts.c	2004-08-20 11:56:31.000000000 +1000
@@ -302,7 +302,7 @@
 	}
 #endif
 #ifdef DROPBEAR_DSS
-	type = DROPBEAR_SIGNKEY_RSA;
+	type = DROPBEAR_SIGNKEY_DSS;
 	ret = readhostkey(dsskeyfile, hostkey, &type);
 	if (ret == DROPBEAR_FAILURE) {
 		disablekey(DROPBEAR_SIGNKEY_DSS, dsskeyfile);