1- use anyhow:: { anyhow, Result } ;
1+ use anyhow:: { anyhow, Error , Result } ;
22use serde:: { Deserialize , Serialize } ;
33
44#[ derive( Debug , PartialEq , Clone ) ]
@@ -65,14 +65,21 @@ pub struct RelayPayload {
6565}
6666
6767impl RawMessage {
68- pub fn new ( type_id : u8 , data : Vec < u8 > ) -> Self {
68+ pub fn new ( type_id : u8 , data : Vec < u8 > ) -> Result < Self > {
69+ if data. len ( ) > i16:: MAX as usize {
70+ return Err ( Error :: msg ( format ! (
71+ "message length ({}) cannot be greater than {}" ,
72+ data. len( ) ,
73+ i16 :: MAX
74+ ) ) ) ;
75+ }
6976 assert ! ( data. len( ) <= i16 :: MAX as usize ) ;
7077
71- Self {
78+ Ok ( Self {
7279 type_id,
7380 length : data. len ( ) as u16 ,
7481 data,
75- }
82+ } )
7683 }
7784
7885 pub fn type_id ( & self ) -> u8 {
@@ -125,8 +132,8 @@ impl Message for ServerMessage {
125132 Self :: StartRelayMode => vec ! [ ] ,
126133 Self :: Relay ( payload) => payload. data . clone ( ) ,
127134 } ;
128-
129- Ok ( RawMessage :: new ( type_id, data) )
135+
136+ RawMessage :: new ( type_id, data)
130137 }
131138
132139 fn deserialise ( raw_message : & RawMessage ) -> Result < Self > {
@@ -210,7 +217,7 @@ impl Message for ClientMessage {
210217 Self :: Relay ( payload) => payload. data . clone ( ) ,
211218 } ;
212219
213- Ok ( RawMessage :: new ( type_id, data) )
220+ RawMessage :: new ( type_id, data)
214221 }
215222
216223 fn deserialise ( raw_message : & RawMessage ) -> Result < Self > {
@@ -256,7 +263,7 @@ mod tests {
256263
257264 #[ test]
258265 fn test_raw_message_to_vec ( ) {
259- let raw_message = RawMessage :: new ( 0 , vec ! [ 1 , 2 , 3 ] ) ;
266+ let raw_message = RawMessage :: new ( 0 , vec ! [ 1 , 2 , 3 ] ) . unwrap ( ) ;
260267
261268 let vec = raw_message. to_vec ( ) ;
262269
@@ -407,7 +414,7 @@ mod tests {
407414
408415 #[ test]
409416 fn test_server_deserialise_close ( ) {
410- let raw_message = RawMessage :: new ( 0 , vec ! [ ] ) ;
417+ let raw_message = RawMessage :: new ( 0 , vec ! [ ] ) . unwrap ( ) ;
411418
412419 let message = ServerMessage :: deserialise ( & raw_message) . unwrap ( ) ;
413420
@@ -416,7 +423,7 @@ mod tests {
416423
417424 #[ test]
418425 fn test_server_deserialise_key_accepted ( ) {
419- let raw_message = RawMessage :: new ( 1 , vec ! [ ] ) ;
426+ let raw_message = RawMessage :: new ( 1 , vec ! [ ] ) . unwrap ( ) ;
420427
421428 let message = ServerMessage :: deserialise ( & raw_message) . unwrap ( ) ;
422429
@@ -425,7 +432,7 @@ mod tests {
425432
426433 #[ test]
427434 fn test_server_deserialise_key_rejected ( ) {
428- let raw_message = RawMessage :: new ( 2 , vec ! [ ] ) ;
435+ let raw_message = RawMessage :: new ( 2 , vec ! [ ] ) . unwrap ( ) ;
429436
430437 let message = ServerMessage :: deserialise ( & raw_message) . unwrap ( ) ;
431438
@@ -434,7 +441,7 @@ mod tests {
434441
435442 #[ test]
436443 fn test_server_deserialise_already_joined ( ) {
437- let raw_message = RawMessage :: new ( 3 , vec ! [ ] ) ;
444+ let raw_message = RawMessage :: new ( 3 , vec ! [ ] ) . unwrap ( ) ;
438445
439446 let message = ServerMessage :: deserialise ( & raw_message) . unwrap ( ) ;
440447
@@ -446,7 +453,7 @@ mod tests {
446453 let raw_message = RawMessage :: new (
447454 4 ,
448455 Vec :: from ( r#"{"peer_key": "key", "peer_ip_address": "123.123.123.123", "session_nonce": "nonce"}"# . as_bytes ( ) ) ,
449- ) ;
456+ ) . unwrap ( ) ;
450457
451458 let message = ServerMessage :: deserialise ( & raw_message) . unwrap ( ) ;
452459
@@ -462,7 +469,7 @@ mod tests {
462469
463470 #[ test]
464471 fn test_server_deserialise_peer_left ( ) {
465- let raw_message = RawMessage :: new ( 5 , vec ! [ ] ) ;
472+ let raw_message = RawMessage :: new ( 5 , vec ! [ ] ) . unwrap ( ) ;
466473
467474 let message = ServerMessage :: deserialise ( & raw_message) . unwrap ( ) ;
468475
@@ -471,7 +478,7 @@ mod tests {
471478
472479 #[ test]
473480 fn test_server_deserialise_bind_for_direct_connect ( ) {
474- let raw_message = RawMessage :: new ( 6 , vec ! [ ] ) ;
481+ let raw_message = RawMessage :: new ( 6 , vec ! [ ] ) . unwrap ( ) ;
475482
476483 let message = ServerMessage :: deserialise ( & raw_message) . unwrap ( ) ;
477484
@@ -483,7 +490,8 @@ mod tests {
483490 let raw_message = RawMessage :: new (
484491 7 ,
485492 Vec :: from ( r#"{"tcp_port":12345,"udp_port":123}"# . as_bytes ( ) ) ,
486- ) ;
493+ )
494+ . unwrap ( ) ;
487495
488496 let message = ServerMessage :: deserialise ( & raw_message) . unwrap ( ) ;
489497
@@ -498,7 +506,7 @@ mod tests {
498506
499507 #[ test]
500508 fn test_server_deserialise_start_relay_mode ( ) {
501- let raw_message = RawMessage :: new ( 8 , vec ! [ ] ) ;
509+ let raw_message = RawMessage :: new ( 8 , vec ! [ ] ) . unwrap ( ) ;
502510
503511 let message = ServerMessage :: deserialise ( & raw_message) . unwrap ( ) ;
504512
@@ -507,7 +515,7 @@ mod tests {
507515
508516 #[ test]
509517 fn test_server_deserialise_relay ( ) {
510- let raw_message = RawMessage :: new ( 9 , vec ! [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] ) ;
518+ let raw_message = RawMessage :: new ( 9 , vec ! [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] ) . unwrap ( ) ;
511519
512520 let message = ServerMessage :: deserialise ( & raw_message) . unwrap ( ) ;
513521
@@ -597,7 +605,7 @@ mod tests {
597605
598606 #[ test]
599607 fn test_client_deserialise_close ( ) {
600- let raw_message = RawMessage :: new ( 0 , vec ! [ ] ) ;
608+ let raw_message = RawMessage :: new ( 0 , vec ! [ ] ) . unwrap ( ) ;
601609
602610 let message = ClientMessage :: deserialise ( & raw_message) . unwrap ( ) ;
603611
@@ -606,7 +614,7 @@ mod tests {
606614
607615 #[ test]
608616 fn test_client_deserialise_key ( ) {
609- let raw_message = RawMessage :: new ( 1 , Vec :: from ( r#"{"key":"key"}"# . as_bytes ( ) ) ) ;
617+ let raw_message = RawMessage :: new ( 1 , Vec :: from ( r#"{"key":"key"}"# . as_bytes ( ) ) ) . unwrap ( ) ;
610618
611619 let message = ClientMessage :: deserialise ( & raw_message) . unwrap ( ) ;
612620
@@ -623,7 +631,8 @@ mod tests {
623631 let raw_message = RawMessage :: new (
624632 2 ,
625633 Vec :: from ( r#"{"tcp_port":null,"udp_port":2222}"# . as_bytes ( ) ) ,
626- ) ;
634+ )
635+ . unwrap ( ) ;
627636
628637 let message = ClientMessage :: deserialise ( & raw_message) . unwrap ( ) ;
629638
@@ -638,7 +647,7 @@ mod tests {
638647
639648 #[ test]
640649 fn test_client_deserialise_direct_contact_succeeded ( ) {
641- let raw_message = RawMessage :: new ( 3 , vec ! [ ] ) ;
650+ let raw_message = RawMessage :: new ( 3 , vec ! [ ] ) . unwrap ( ) ;
642651
643652 let message = ClientMessage :: deserialise ( & raw_message) . unwrap ( ) ;
644653
@@ -647,7 +656,7 @@ mod tests {
647656
648657 #[ test]
649658 fn test_client_deserialise_direct_contact_failed ( ) {
650- let raw_message = RawMessage :: new ( 4 , vec ! [ ] ) ;
659+ let raw_message = RawMessage :: new ( 4 , vec ! [ ] ) . unwrap ( ) ;
651660
652661 let message = ClientMessage :: deserialise ( & raw_message) . unwrap ( ) ;
653662
@@ -656,7 +665,7 @@ mod tests {
656665
657666 #[ test]
658667 fn test_client_deserialise_relay ( ) {
659- let raw_message = RawMessage :: new ( 5 , vec ! [ 1 , 2 , 3 , 4 , 5 ] ) ;
668+ let raw_message = RawMessage :: new ( 5 , vec ! [ 1 , 2 , 3 , 4 , 5 ] ) . unwrap ( ) ;
660669
661670 let message = ClientMessage :: deserialise ( & raw_message) . unwrap ( ) ;
662671
0 commit comments