protover: Add missing Padding to translate_to_rust

This commit also explicitly set the value of the PRT enum so we can match/pin
the C enum values to the Rust one in protover/ffi.rs.

Fixes #29631

Signed-off-by: David Goulet <dgoulet@torproject.org>
This commit is contained in:
David Goulet 2019-03-01 13:50:00 -05:00
parent 955a622391
commit a999cb43df
3 changed files with 16 additions and 11 deletions

4
changes/ticket29631 Normal file
View File

@ -0,0 +1,4 @@
o Minor bugfixes (Rust, protover):
- The Rust implementation of protover was missing the "Padding" value in
the translate function from C to Rust. Fixes bug 29631; bugfix on
0.4.0.1-alpha.

View File

@ -33,17 +33,17 @@ struct smartlist_t;
/// C_RUST_COUPLED: src/rust/protover/ffi.rs `translate_to_rust` /// C_RUST_COUPLED: src/rust/protover/ffi.rs `translate_to_rust`
/// C_RUST_COUPLED: src/rust/protover/protover.rs `Proto` /// C_RUST_COUPLED: src/rust/protover/protover.rs `Proto`
typedef enum protocol_type_t { typedef enum protocol_type_t {
PRT_LINK, PRT_LINK = 0,
PRT_LINKAUTH, PRT_LINKAUTH = 1,
PRT_RELAY, PRT_RELAY = 2,
PRT_DIRCACHE, PRT_DIRCACHE = 3,
PRT_HSDIR, PRT_HSDIR = 4,
PRT_HSINTRO, PRT_HSINTRO = 5,
PRT_HSREND, PRT_HSREND = 6,
PRT_DESC, PRT_DESC = 7,
PRT_MICRODESC, PRT_MICRODESC = 8,
PRT_CONS, PRT_CONS = 9,
PRT_PADDING, PRT_PADDING = 10,
} protocol_type_t; } protocol_type_t;
bool protover_contains_long_protocol_names(const char *s); bool protover_contains_long_protocol_names(const char *s);

View File

@ -30,6 +30,7 @@ fn translate_to_rust(c_proto: uint32_t) -> Result<Protocol, ProtoverError> {
7 => Ok(Protocol::Desc), 7 => Ok(Protocol::Desc),
8 => Ok(Protocol::Microdesc), 8 => Ok(Protocol::Microdesc),
9 => Ok(Protocol::Cons), 9 => Ok(Protocol::Cons),
10 => Ok(Protocol::Padding),
_ => Err(ProtoverError::UnknownProtocol), _ => Err(ProtoverError::UnknownProtocol),
} }
} }