Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
George Kadianakis
Tor
Commits
a9b287fb
Commit
a9b287fb
authored
Jul 23, 2021
by
Nick Mathewson
🏃
Browse files
Merge remote-tracking branch 'tor-gitlab/mr/412'
parents
bc40c6af
72aa23a9
Changes
3
Hide whitespace changes
Inline
Side-by-side
changes/bug40435
0 → 100644
View file @
a9b287fb
o Minor bugfixes (circuit padding):
- Don't send STOP circuit padding cells when the other side has already
shut down the corresponding padding machine. Fixes bug 40435; bugfix on
0.4.0.1-alpha.
\ No newline at end of file
src/core/or/circuitpadding.c
View file @
a9b287fb
...
...
@@ -2967,6 +2967,8 @@ signed_error_t
circpad_handle_padding_negotiate
(
circuit_t
*
circ
,
cell_t
*
cell
)
{
int
retval
=
0
;
/* Should we send back a STOP cell? */
bool
respond_with_stop
=
true
;
circpad_negotiate_t
*
negotiate
;
if
(
CIRCUIT_IS_ORIGIN
(
circ
))
{
...
...
@@ -2992,6 +2994,12 @@ circpad_handle_padding_negotiate(circuit_t *circ, cell_t *cell)
negotiate
->
machine_type
,
negotiate
->
machine_ctr
);
goto
done
;
}
/* If we reached this point we received a STOP command from an old or
unknown machine. Don't reply with our own STOP since there is no one to
handle it on the other end */
respond_with_stop
=
false
;
if
(
negotiate
->
machine_ctr
<=
circ
->
padding_machine_ctr
)
{
log_info
(
LD_CIRC
,
"Received STOP command for old machine %u, ctr %u"
,
negotiate
->
machine_type
,
negotiate
->
machine_ctr
);
...
...
@@ -3023,10 +3031,13 @@ circpad_handle_padding_negotiate(circuit_t *circ, cell_t *cell)
retval
=
-
1
;
done:
circpad_padding_negotiated
(
circ
,
negotiate
->
machine_type
,
negotiate
->
command
,
(
retval
==
0
)
?
CIRCPAD_RESPONSE_OK
:
CIRCPAD_RESPONSE_ERR
,
negotiate
->
machine_ctr
);
if
(
respond_with_stop
)
{
circpad_padding_negotiated
(
circ
,
negotiate
->
machine_type
,
negotiate
->
command
,
(
retval
==
0
)
?
CIRCPAD_RESPONSE_OK
:
CIRCPAD_RESPONSE_ERR
,
negotiate
->
machine_ctr
);
}
circpad_negotiate_free
(
negotiate
);
return
retval
;
...
...
src/test/test_circuitpadding.c
View file @
a9b287fb
...
...
@@ -1367,7 +1367,7 @@ test_circuitpadding_wronghop(void *arg)
tt_ptr_op
(
client_side
->
padding_info
[
0
],
OP_NE
,
NULL
);
tt_ptr_op
(
relay_side
->
padding_machine
[
0
],
OP_NE
,
NULL
);
tt_ptr_op
(
relay_side
->
padding_info
[
0
],
OP_NE
,
NULL
);
tt_int_op
(
n_relay_cells
,
OP_EQ
,
3
);
tt_int_op
(
n_relay_cells
,
OP_EQ
,
2
);
tt_int_op
(
n_client_cells
,
OP_EQ
,
2
);
/* 6. Sending negotiated command to relay does nothing */
...
...
@@ -1396,11 +1396,9 @@ test_circuitpadding_wronghop(void *arg)
/* verify no padding was negotiated */
tt_ptr_op
(
relay_side
->
padding_machine
[
0
],
OP_EQ
,
NULL
);
tt_ptr_op
(
client_side
->
padding_machine
[
0
],
OP_EQ
,
NULL
);
tt_int_op
(
n_relay_cells
,
OP_EQ
,
3
);
tt_int_op
(
n_client_cells
,
OP_EQ
,
2
);
/* verify no echo was sent */
tt_int_op
(
n_relay_cells
,
OP_EQ
,
3
);
tt_int_op
(
n_relay_cells
,
OP_EQ
,
2
);
tt_int_op
(
n_client_cells
,
OP_EQ
,
2
);
/* Finish circuit */
...
...
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