Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Matt Johnston
dropbear
Commits
3e4433f7
Commit
3e4433f7
authored
Feb 18, 2014
by
Matt Johnston
Browse files
- Fix dbclient with port 0 for server-allocated
- Fix port forwards with a bind address of 127.0.0.1 vs "localhost" etc
parent
29062e62
Changes
1
Hide whitespace changes
Inline
Side-by-side
cli-tcpfwd.c
View file @
3e4433f7
...
...
@@ -161,9 +161,10 @@ void cli_recv_msg_request_success() {
if
(
!
fwd
->
have_reply
)
{
fwd
->
have_reply
=
1
;
if
(
fwd
->
listenport
==
0
)
{
/* The server should let us know which port was allocated if we requestd port 0 */
/* The server should let us know which port was allocated if we request
e
d port 0 */
int
allocport
=
buf_getint
(
ses
.
payload
);
if
(
allocport
>
0
)
{
fwd
->
listenport
=
allocport
;
dropbear_log
(
LOG_INFO
,
"Allocated port %d for remote forward to %s:%d"
,
allocport
,
fwd
->
connectaddr
,
fwd
->
connectport
);
}
...
...
@@ -220,18 +221,33 @@ static int newtcpforwarded(struct Channel * channel) {
origaddr
=
buf_getstring
(
ses
.
payload
,
NULL
);
origport
=
buf_getint
(
ses
.
payload
);
/* Find which port corresponds */
/* Find which port corresponds. First try and match address as well as port,
in case they want to forward different ports separately ... */
for
(
iter
=
cli_opts
.
remotefwds
->
first
;
iter
;
iter
=
iter
->
next
)
{
fwd
=
(
struct
TCPFwdEntry
*
)
iter
->
item
;
if
(
origport
==
fwd
->
listenport
&&
(
strcmp
(
origaddr
,
fwd
->
listenaddr
)
==
0
)
)
{
&&
strcmp
(
origaddr
,
fwd
->
listenaddr
)
==
0
)
{
break
;
}
}
if
(
!
iter
)
{
/* ... otherwise try to generically match the only forwarded port
without address (also handles ::1 vs 127.0.0.1 vs localhost case).
rfc4254 is vague about the definition of "address that was connected" */
for
(
iter
=
cli_opts
.
remotefwds
->
first
;
iter
;
iter
=
iter
->
next
)
{
fwd
=
(
struct
TCPFwdEntry
*
)
iter
->
item
;
if
(
origport
==
fwd
->
listenport
)
{
break
;
}
}
}
if
(
iter
==
NULL
)
{
/* We didn't request forwarding on that port */
cleantext
(
origaddr
);
cleantext
(
origaddr
);
dropbear_log
(
LOG_INFO
,
"Server sent unrequested forward from
\"
%s:%d
\"
"
,
origaddr
,
origport
);
goto
out
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment