Increase link_proto field to 2 bytes

This should have been 2 bytes all along, since version numbers can
be 16 bits long.  This isn't a live bug, since the call to
is_or_protocol_version_known in channel_tls_process_versions_cell
will reject any version number not in the range 1..4.  Still, let's
fix this before we accidentally start supporting version 256.

Reported pseudonymously. Fixes bug 8062; bugfix on 0.2.0.10-alpha --
specifically, on commit 6fcda529, where during development I
increased the width of a version to 16 bits without changing the
type of link_proto.
This commit is contained in:
Nick Mathewson 2013-03-11 12:34:14 -04:00
parent 0196647970
commit fca578d9b5
2 changed files with 7 additions and 2 deletions

5
changes/bug8062 Normal file
View File

@ -0,0 +1,5 @@
o Minor bugfixes:
- Increase the width of the field used to remember a connection's
link protocol version to two bytes. Harmless for now, since the
only currently recognized versions are one byte long. Reported
pseudynmously. Fixes bug 8062, bugfix on 0.2.0.10-alpha.

View File

@ -1417,8 +1417,8 @@ typedef struct or_connection_t {
unsigned int is_outgoing:1;
unsigned int proxy_type:2; /**< One of PROXY_NONE...PROXY_SOCKS5 */
unsigned int wide_circ_ids:1;
uint8_t link_proto; /**< What protocol version are we using? 0 for
* "none negotiated yet." */
uint16_t link_proto; /**< What protocol version are we using? 0 for
* "none negotiated yet." */
or_handshake_state_t *handshake_state; /**< If we are setting this connection
* up, state information to do so. */