Mercurial > dropbear
annotate svr-x11fwd.c @ 447:278805938dcf
Patch from Nicolai Ehemann to try binding before going to the background,
so that if it exits early (because something's already listening etc)
then it will return an exitcode of 1.
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Thu, 19 Jul 2007 15:54:18 +0000 |
parents | 161557a9dde8 |
children | 740e782679be 52a644e7b8e1 |
rev | line source |
---|---|
10
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
1 /* |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
2 * Dropbear - a SSH2 server |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
3 * |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
4 * Copyright (c) 2002,2003 Matt Johnston |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
5 * All rights reserved. |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
6 * |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
7 * Permission is hereby granted, free of charge, to any person obtaining a copy |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
8 * of this software and associated documentation files (the "Software"), to deal |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
9 * in the Software without restriction, including without limitation the rights |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
10 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
11 * copies of the Software, and to permit persons to whom the Software is |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
12 * furnished to do so, subject to the following conditions: |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
13 * |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
14 * The above copyright notice and this permission notice shall be included in |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
15 * all copies or substantial portions of the Software. |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
16 * |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
20 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
23 * SOFTWARE. */ |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
24 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
25 #include "includes.h" |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
26 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
27 #ifndef DISABLE_X11FWD |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
28 #include "x11fwd.h" |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
29 #include "session.h" |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
30 #include "ssh.h" |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
31 #include "dbutil.h" |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
32 #include "chansession.h" |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
33 #include "channel.h" |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
34 #include "packet.h" |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
35 #include "buffer.h" |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
36 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
37 #define X11BASEPORT 6000 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
38 #define X11BINDBASE 6010 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
39 |
62 | 40 static void x11accept(struct Listener* listener, int sock); |
10
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
41 static int bindport(int fd); |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
42 static int send_msg_channel_open_x11(int fd, struct sockaddr_in* addr); |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
43 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
44 /* called as a request for a session channel, sets up listening X11 */ |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
45 /* returns DROPBEAR_SUCCESS or DROPBEAR_FAILURE */ |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
46 int x11req(struct ChanSess * chansess) { |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
47 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
48 int fd; |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
49 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
50 /* we already have an x11 connection */ |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
51 if (chansess->x11listener != NULL) { |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
52 return DROPBEAR_FAILURE; |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
53 } |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
54 |
179
161557a9dde8
* fix longstanding bug with connections being closed on failure to
Matt Johnston <matt@ucc.asn.au>
parents:
165
diff
changeset
|
55 chansess->x11singleconn = buf_getbool(ses.payload); |
10
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
56 chansess->x11authprot = buf_getstring(ses.payload, NULL); |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
57 chansess->x11authcookie = buf_getstring(ses.payload, NULL); |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
58 chansess->x11screennum = buf_getint(ses.payload); |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
59 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
60 /* create listening socket */ |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
61 fd = socket(PF_INET, SOCK_STREAM, 0); |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
62 if (fd < 0) { |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
63 goto fail; |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
64 } |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
65 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
66 /* allocate port and bind */ |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
67 chansess->x11port = bindport(fd); |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
68 if (chansess->x11port < 0) { |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
69 goto fail; |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
70 } |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
71 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
72 /* listen */ |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
73 if (listen(fd, 20) < 0) { |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
74 goto fail; |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
75 } |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
76 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
77 /* set non-blocking */ |
109
2e9d1f29c50f
merge of 50be59810e462f9f44f55e421227d6aa0b31982b
Matt Johnston <matt@ucc.asn.au>
parents:
95
diff
changeset
|
78 setnonblocking(fd); |
10
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
79 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
80 /* listener code will handle the socket now. |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
81 * No cleanup handler needed, since listener_remove only happens |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
82 * from our cleanup anyway */ |
62 | 83 chansess->x11listener = new_listener( &fd, 1, 0, chansess, x11accept, NULL); |
10
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
84 if (chansess->x11listener == NULL) { |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
85 goto fail; |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
86 } |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
87 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
88 return DROPBEAR_SUCCESS; |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
89 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
90 fail: |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
91 /* cleanup */ |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
92 m_free(chansess->x11authprot); |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
93 m_free(chansess->x11authcookie); |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
94 close(fd); |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
95 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
96 return DROPBEAR_FAILURE; |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
97 } |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
98 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
99 /* accepts a new X11 socket */ |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
100 /* returns DROPBEAR_FAILURE or DROPBEAR_SUCCESS */ |
62 | 101 static void x11accept(struct Listener* listener, int sock) { |
10
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
102 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
103 int fd; |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
104 struct sockaddr_in addr; |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
105 int len; |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
106 int ret; |
13
db2c8e6fb284
Fixed stupid agentfwd error (using the listening FD, not the accepted on. gah)
Matt Johnston <matt@ucc.asn.au>
parents:
12
diff
changeset
|
107 struct ChanSess * chansess = (struct ChanSess *)(listener->typedata); |
10
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
108 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
109 len = sizeof(addr); |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
110 |
62 | 111 fd = accept(sock, (struct sockaddr*)&addr, &len); |
10
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
112 if (fd < 0) { |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
113 return; |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
114 } |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
115 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
116 /* if single-connection we close it up */ |
13
db2c8e6fb284
Fixed stupid agentfwd error (using the listening FD, not the accepted on. gah)
Matt Johnston <matt@ucc.asn.au>
parents:
12
diff
changeset
|
117 if (chansess->x11singleconn) { |
db2c8e6fb284
Fixed stupid agentfwd error (using the listening FD, not the accepted on. gah)
Matt Johnston <matt@ucc.asn.au>
parents:
12
diff
changeset
|
118 x11cleanup(chansess); |
10
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
119 } |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
120 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
121 ret = send_msg_channel_open_x11(fd, &addr); |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
122 if (ret == DROPBEAR_FAILURE) { |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
123 close(fd); |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
124 } |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
125 } |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
126 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
127 /* This is called after switching to the user, and sets up the xauth |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
128 * and environment variables. */ |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
129 void x11setauth(struct ChanSess *chansess) { |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
130 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
131 char display[20]; /* space for "localhost:12345.123" */ |
70
b0316ce64e4b
Merging in the changes from 0.41-0.43 main Dropbear tree
Matt Johnston <matt@ucc.asn.au>
parents:
62
diff
changeset
|
132 FILE * authprog = NULL; |
10
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
133 int val; |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
134 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
135 if (chansess->x11listener == NULL) { |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
136 return; |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
137 } |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
138 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
139 /* create the DISPLAY string */ |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
140 val = snprintf(display, sizeof(display), "localhost:%d.%d", |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
141 chansess->x11port - X11BASEPORT, chansess->x11screennum); |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
142 if (val < 0 || val >= (int)sizeof(display)) { |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
143 /* string was truncated */ |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
144 return; |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
145 } |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
146 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
147 addnewvar("DISPLAY", display); |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
148 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
149 /* create the xauth string */ |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
150 val = snprintf(display, sizeof(display), "unix:%d.%d", |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
151 chansess->x11port - X11BASEPORT, chansess->x11screennum); |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
152 if (val < 0 || val >= (int)sizeof(display)) { |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
153 /* string was truncated */ |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
154 return; |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
155 } |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
156 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
157 /* popen is a nice function - code is strongly based on OpenSSH's */ |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
158 authprog = popen(XAUTH_COMMAND, "w"); |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
159 if (authprog) { |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
160 fprintf(authprog, "add %s %s %s\n", |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
161 display, chansess->x11authprot, chansess->x11authcookie); |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
162 pclose(authprog); |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
163 } else { |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
164 fprintf(stderr, "Failed to run %s\n", XAUTH_COMMAND); |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
165 } |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
166 } |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
167 |
13
db2c8e6fb284
Fixed stupid agentfwd error (using the listening FD, not the accepted on. gah)
Matt Johnston <matt@ucc.asn.au>
parents:
12
diff
changeset
|
168 void x11cleanup(struct ChanSess *chansess) { |
10
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
169 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
170 m_free(chansess->x11authprot); |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
171 m_free(chansess->x11authcookie); |
95
b855bf63766c
Don't try to remove non-eixtant listeners
Matt Johnston <matt@ucc.asn.au>
parents:
70
diff
changeset
|
172 |
165
0cfba3034be5
Fixed DEBUG_TRACE macro so that we don't get semicolons left about the place
Matt Johnston <matt@ucc.asn.au>
parents:
109
diff
changeset
|
173 TRACE(("chansess %s", chansess)) |
95
b855bf63766c
Don't try to remove non-eixtant listeners
Matt Johnston <matt@ucc.asn.au>
parents:
70
diff
changeset
|
174 if (chansess->x11listener != NULL) { |
b855bf63766c
Don't try to remove non-eixtant listeners
Matt Johnston <matt@ucc.asn.au>
parents:
70
diff
changeset
|
175 remove_listener(chansess->x11listener); |
b855bf63766c
Don't try to remove non-eixtant listeners
Matt Johnston <matt@ucc.asn.au>
parents:
70
diff
changeset
|
176 chansess->x11listener = NULL; |
b855bf63766c
Don't try to remove non-eixtant listeners
Matt Johnston <matt@ucc.asn.au>
parents:
70
diff
changeset
|
177 } |
10
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
178 } |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
179 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
180 static const struct ChanType chan_x11 = { |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
181 0, /* sepfds */ |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
182 "x11", |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
183 NULL, /* inithandler */ |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
184 NULL, /* checkclose */ |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
185 NULL, /* reqhandler */ |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
186 NULL /* closehandler */ |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
187 }; |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
188 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
189 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
190 static int send_msg_channel_open_x11(int fd, struct sockaddr_in* addr) { |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
191 |
70
b0316ce64e4b
Merging in the changes from 0.41-0.43 main Dropbear tree
Matt Johnston <matt@ucc.asn.au>
parents:
62
diff
changeset
|
192 char* ipstring = NULL; |
10
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
193 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
194 if (send_msg_channel_open_init(fd, &chan_x11) == DROPBEAR_SUCCESS) { |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
195 ipstring = inet_ntoa(addr->sin_addr); |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
196 buf_putstring(ses.writepayload, ipstring, strlen(ipstring)); |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
197 buf_putint(ses.writepayload, addr->sin_port); |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
198 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
199 encrypt_packet(); |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
200 return DROPBEAR_SUCCESS; |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
201 } else { |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
202 return DROPBEAR_FAILURE; |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
203 } |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
204 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
205 } |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
206 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
207 /* returns the port bound to, or -1 on failure. |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
208 * Will attempt to bind to a port X11BINDBASE (6010 usually) or upwards */ |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
209 static int bindport(int fd) { |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
210 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
211 struct sockaddr_in addr; |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
212 uint16_t port; |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
213 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
214 memset((void*)&addr, 0x0, sizeof(addr)); |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
215 addr.sin_family = AF_INET; |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
216 addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
217 |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
218 /* if we can't find one in 2000 ports free, something's wrong */ |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
219 for (port = X11BINDBASE; port < X11BINDBASE + 2000; port++) { |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
220 addr.sin_port = htons(port); |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
221 if (bind(fd, (struct sockaddr*)&addr, |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
222 sizeof(struct sockaddr_in)) == 0) { |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
223 /* success */ |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
224 return port; |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
225 } |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
226 if (errno == EADDRINUSE) { |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
227 /* try the next port */ |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
228 continue; |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
229 } |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
230 /* otherwise it was an error we don't know about */ |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
231 dropbear_log(LOG_DEBUG, "failed to bind x11 socket"); |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
232 break; |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
233 } |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
234 return -1; |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
235 } |
0f7d69d31b9d
- renaming x11fwd.c to svr-x11fwd.c, to testing monotone
Matt Johnston <matt@ucc.asn.au>
parents:
diff
changeset
|
236 #endif /* DROPBEAR_X11FWD */ |