aboutsummaryrefslogtreecommitdiff
path: root/src/feature/control/control_connection_st.h
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2019-04-02 10:41:12 -0400
committerNick Mathewson <nickm@torproject.org>2019-04-25 14:13:03 -0400
commitdbfe1a14e44647a4d5f27f8d495f3468208d75dd (patch)
tree019b889b40e0390898c3ae18ad4132926c4b4d91 /src/feature/control/control_connection_st.h
parentf18b7dc4731bcb853db92a0faaa4ec03d6ef5586 (diff)
downloadtor-dbfe1a14e44647a4d5f27f8d495f3468208d75dd.tar.gz
tor-dbfe1a14e44647a4d5f27f8d495f3468208d75dd.zip
When parsing a multiline controller command, be careful with linebreaks
The first line break in particular was mishandled: it was discarded if no arguments came before it, which made it impossible to distinguish arguments from the first line of the body. To solve this, we need to allocate a copy of the command rather than using NUL to separate it, since we might have "COMMAND\n" as our input. Fixes ticket 29984.
Diffstat (limited to 'src/feature/control/control_connection_st.h')
-rw-r--r--src/feature/control/control_connection_st.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/feature/control/control_connection_st.h b/src/feature/control/control_connection_st.h
index 177a916257..cace6bb36f 100644
--- a/src/feature/control/control_connection_st.h
+++ b/src/feature/control/control_connection_st.h
@@ -40,7 +40,8 @@ struct control_connection_t {
/** A control command that we're reading from the inbuf, but which has not
* yet arrived completely. */
char *incoming_cmd;
+ /** The control command that we are currently processing. */
+ char *current_cmd;
};
#endif
-