]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
rust: fix clippy lints for clippy::len_zero
authorJason Ish <jason.ish@oisf.net>
Wed, 5 Oct 2022 14:57:27 +0000 (08:57 -0600)
committerVictor Julien <vjulien@oisf.net>
Mon, 24 Oct 2022 09:20:08 +0000 (11:20 +0200)
45 files changed:
rust/src/applayertemplate/template.rs
rust/src/dcerpc/dcerpc.rs
rust/src/dhcp/logger.rs
rust/src/dns/dns.rs
rust/src/dns/log.rs
rust/src/dns/parser.rs
rust/src/filecontainer.rs
rust/src/http2/detect.rs
rust/src/http2/http2.rs
rust/src/http2/parser.rs
rust/src/ike/detect.rs
rust/src/ike/ike.rs
rust/src/ike/ikev1.rs
rust/src/ike/logger.rs
rust/src/krb/krb5.rs
rust/src/mime/mod.rs
rust/src/modbus/modbus.rs
rust/src/mqtt/detect.rs
rust/src/mqtt/logger.rs
rust/src/mqtt/mqtt.rs
rust/src/mqtt/parser.rs
rust/src/nfs/log.rs
rust/src/nfs/nfs.rs
rust/src/nfs/nfs4.rs
rust/src/pgsql/pgsql.rs
rust/src/quic/logger.rs
rust/src/quic/quic.rs
rust/src/rdp/log.rs
rust/src/rdp/parser.rs
rust/src/rdp/rdp.rs
rust/src/rfb/detect.rs
rust/src/rfb/rfb.rs
rust/src/sip/detect.rs
rust/src/smb/dcerpc.rs
rust/src/smb/detect.rs
rust/src/smb/log.rs
rust/src/smb/smb.rs
rust/src/smb/smb1.rs
rust/src/smb/smb2.rs
rust/src/smb/smb_records.rs
rust/src/snmp/log.rs
rust/src/ssh/detect.rs
rust/src/ssh/logger.rs
rust/src/ssh/ssh.rs
rust/src/telnet/telnet.rs

index 3b6a9c204669675f860c536efef1895d7adf41f6..a00baaf9436e1b07170e024b6d86de7358839799 100644 (file)
@@ -127,7 +127,7 @@ impl TemplateState {
 
     fn parse_request(&mut self, input: &[u8]) -> AppLayerResult {
         // We're not interested in empty requests.
-        if input.len() == 0 {
+        if input.is_empty() {
             return AppLayerResult::ok();
         }
 
@@ -145,7 +145,7 @@ impl TemplateState {
         }
 
         let mut start = input;
-        while start.len() > 0 {
+        while !start.is_empty() {
             match parser::parse_message(start) {
                 Ok((rem, request)) => {
                     start = rem;
@@ -175,7 +175,7 @@ impl TemplateState {
 
     fn parse_response(&mut self, input: &[u8]) -> AppLayerResult {
         // We're not interested in empty responses.
-        if input.len() == 0 {
+        if input.is_empty() {
             return AppLayerResult::ok();
         }
 
@@ -191,7 +191,7 @@ impl TemplateState {
             self.response_gap = false;
         }
         let mut start = input;
-        while start.len() > 0 {
+        while !start.is_empty() {
             match parser::parse_message(start) {
                 Ok((rem, response)) => {
                     start = rem;
@@ -396,7 +396,7 @@ pub unsafe extern "C" fn rs_template_get_request_buffer(
 {
     let tx = cast_pointer!(tx, TemplateTransaction);
     if let Some(ref request) = tx.request {
-        if request.len() > 0 {
+        if !request.is_empty() {
             *len = request.len() as u32;
             *buf = request.as_ptr();
             return 1;
@@ -415,7 +415,7 @@ pub unsafe extern "C" fn rs_template_get_response_buffer(
 {
     let tx = cast_pointer!(tx, TemplateTransaction);
     if let Some(ref response) = tx.response {
-        if response.len() > 0 {
+        if !response.is_empty() {
             *len = response.len() as u32;
             *buf = response.as_ptr();
             return 1;
index 2d5bca371504fec26365be9a6957a32949becf98..b180ccaaa339d06184e89d23ecfdfcb8a94c4c67 100644 (file)
@@ -437,14 +437,14 @@ impl DCERPCState {
     }
 
     pub fn handle_gap_ts(&mut self) -> u8 {
-        if self.buffer_ts.len() > 0 {
+        if !self.buffer_ts.is_empty() {
             self.buffer_ts.clear();
         }
         return 0;
     }
 
     pub fn handle_gap_tc(&mut self) -> u8 {
-        if self.buffer_tc.len() > 0 {
+        if !self.buffer_tc.is_empty() {
             self.buffer_tc.clear();
         }
         return 0;
@@ -976,7 +976,7 @@ impl DCERPCState {
             }
         };
 
-        if self.data_needed_for_dir != direction && buffer.len() != 0 {
+        if self.data_needed_for_dir != direction && !buffer.is_empty() {
             return AppLayerResult::err();
         }
 
index 6fe835ebd3717ebe61be9ea8688985596338ae51..4cd2580949c889cfad96d4e2c782fe8c77995ff6 100644 (file)
@@ -44,7 +44,7 @@ impl DHCPLogger {
                 &DHCPOptionWrapper::Generic(ref option) => {
                     match code {
                         DHCP_OPT_TYPE => {
-                            if option.data.len() > 0 {
+                            if !option.data.is_empty() {
                                 return Some(option.data[0]);
                             }
                         }
@@ -137,7 +137,7 @@ impl DHCPLogger {
                             }
                         }
                         DHCP_OPT_HOSTNAME => {
-                            if option.data.len() > 0 {
+                            if !option.data.is_empty() {
                                 js.set_string_from_bytes("hostname",
                                                          &option.data)?;
                             }
@@ -179,7 +179,7 @@ impl DHCPLogger {
     }
 
     fn log_opt_type(&self, js: &mut JsonBuilder, option: &DHCPOptGeneric) -> Result<(), JsonError> {
-        if option.data.len() > 0 {
+        if !option.data.is_empty() {
             let dhcp_type = match option.data[0] {
                 DHCP_TYPE_DISCOVER => "discover",
                 DHCP_TYPE_OFFER => "offer",
@@ -210,7 +210,7 @@ impl DHCPLogger {
                 DHCP_PARAM_TFTP_SERVER_IP => "tftp_server_ip",
                 _ => ""
             };
-            if param.len() > 0 {
+            if !param.is_empty() {
                 js.append_string(param)?;
             }
         }
index e545348d7d9e69f609ab871ceed6dbebc348f5de..309349f5c3327fc298eb0475b6fb7a03dc4b31d8 100644 (file)
@@ -505,7 +505,7 @@ impl DNSState {
 
         let mut cur_i = input;
         let mut consumed = 0;
-        while cur_i.len() > 0 {
+        while !cur_i.is_empty() {
             if cur_i.len() == 1 {
                 return AppLayerResult::incomplete(consumed as u32, 2 as u32);
             }
@@ -554,7 +554,7 @@ impl DNSState {
 
         let mut cur_i = input;
         let mut consumed = 0;
-        while cur_i.len() > 0 {
+        while !cur_i.is_empty() {
             if cur_i.len() == 1 {
                 return AppLayerResult::incomplete(consumed as u32, 2 as u32);
             }
@@ -838,7 +838,7 @@ pub unsafe extern "C" fn rs_dns_tx_get_query_name(tx: &mut DNSTransaction,
     if let &Some(ref request) = &tx.request {
         if (i as usize) < request.queries.len() {
             let query = &request.queries[i as usize];
-            if query.name.len() > 0 {
+            if !query.name.is_empty() {
                 *len = query.name.len() as u32;
                 *buf = query.name.as_ptr();
                 return 1;
@@ -876,7 +876,7 @@ pub unsafe extern "C" fn rs_dns_tx_get_query_rrtype(tx: &mut DNSTransaction,
     if let &Some(ref request) = &tx.request {
         if (i as usize) < request.queries.len() {
             let query = &request.queries[i as usize];
-            if query.name.len() > 0 {
+            if !query.name.is_empty() {
                 *rrtype = query.rrtype;
                 return 1;
             }
index fe3ff2f9d5b52e85ccefb94fe89f084a85affecf..038e12753fd946a7f0519083a3346fd802c89997 100644 (file)
@@ -514,7 +514,7 @@ fn dns_log_json_answer(js: &mut JsonBuilder, response: &DNSResponse, flags: u64)
     }
     js.set_string("rcode", &dns_rcode_string(header.flags))?;
 
-    if response.answers.len() > 0 {
+    if !response.answers.is_empty() {
         let mut js_answers = JsonBuilder::new_array();
 
         // For grouped answers we use a HashMap keyed by the rrtype.
@@ -601,7 +601,7 @@ fn dns_log_json_answer(js: &mut JsonBuilder, response: &DNSResponse, flags: u64)
 
     }
 
-    if response.authorities.len() > 0 {
+    if !response.authorities.is_empty() {
         js.open_array("authorities")?;
         for auth in &response.authorities {
             let auth_detail = dns_log_json_answer_detail(auth)?;
index 94f06dbc89c1b8d0575dadd66f236c58faacec1d..dbdca79c6ef5d6cc6adf5bc3a1e1d8432358f061 100644 (file)
@@ -57,7 +57,7 @@ pub fn dns_parse_name<'a, 'b>(start: &'b [u8], message: &'b [u8]) -> IResult<&'b
     let mut count = 0;
 
     loop {
-        if pos.len() == 0 {
+        if pos.is_empty() {
             break;
         }
 
@@ -68,7 +68,7 @@ pub fn dns_parse_name<'a, 'b>(start: &'b [u8], message: &'b [u8]) -> IResult<&'b
             break;
         } else if len & 0b1100_0000 == 0 {
             let (rem, label) = length_data(be_u8)(pos)?;
-            if name.len() > 0 {
+            if !name.is_empty() {
                 name.push(b'.');
             }
             name.extend(label);
@@ -477,7 +477,7 @@ mod tests {
 
                 // For now we have some remainder data as there is an
                 // additional record type we don't parse yet.
-                assert!(rem.len() > 0);
+                assert!(!rem.is_empty());
 
                 assert_eq!(request.header, DNSHeader {
                     tx_id: 0x8d32,
@@ -602,7 +602,7 @@ mod tests {
 
                 // For now we have some remainder data as there is an
                 // additional record type we don't parse yet.
-                assert!(rem.len() > 0);
+                assert!(!rem.is_empty());
 
                 assert_eq!(response.header, DNSHeader{
                     tx_id: 0x8295,
index d00ae0fa6c3191ae7be8b97d4d746e50f20ac27e..b6eabd4c1e4ceecd858c93d7f0e3c6bcd9256f95 100644 (file)
@@ -95,7 +95,7 @@ impl FileContainer {
 
     pub fn file_append(&mut self, track_id: &u32, data: &[u8], is_gap: bool) -> i32 {
         SCLogDebug!("FILECONTAINER: append {}", data.len());
-        if data.len() == 0 {
+        if data.is_empty() {
             return 0
         }
         match unsafe {SC} {
index e1ba9206deae77727f827a46c5a6593778cd74b6..2cdb60449fb992d15cdf4d21b05375055080071c 100644 (file)
@@ -769,7 +769,7 @@ pub unsafe extern "C" fn rs_http2_tx_get_headers(
             }
         }
     }
-    if vec.len() > 0 {
+    if !vec.is_empty() {
         tx.escaped.push(vec);
         let idx = tx.escaped.len() - 1;
         let value = &tx.escaped[idx];
@@ -801,7 +801,7 @@ pub unsafe extern "C" fn rs_http2_tx_get_headers_raw(
             }
         }
     }
-    if vec.len() > 0 {
+    if !vec.is_empty() {
         tx.escaped.push(vec);
         let idx = tx.escaped.len() - 1;
         let value = &tx.escaped[idx];
index db42839848e5a90c3f4512700ae98cc6c33f453b..c6ce7de6834b7443ba0fedb146db60a35d2beffc 100644 (file)
@@ -849,7 +849,7 @@ impl HTTP2State {
                 match parser::http2_parse_frame_headers(input, hflags, dyn_headers) {
                     Ok((hrem, hs)) => {
                         self.process_headers(&hs.blocks, dir);
-                        if hrem.len() > 0 {
+                        if !hrem.is_empty() {
                             SCLogDebug!("Remaining data for HTTP2 headers");
                             self.set_event(HTTP2Event::ExtraHeaderData);
                         }
@@ -889,7 +889,7 @@ impl HTTP2State {
     fn parse_frames(
         &mut self, mut input: &[u8], il: usize, dir: Direction, flow: *const Flow,
     ) -> AppLayerResult {
-        while input.len() > 0 {
+        while !input.is_empty() {
             match parser::http2_parse_frame_header(input) {
                 Ok((rem, head)) => {
                     let hl = head.length as usize;
index 5314308bc534ca655e9db98fc0534d3b7432819c..90b7ba639404a0918bb709e2e2e023445bf21a63 100644 (file)
@@ -293,7 +293,7 @@ fn http2_frame_header_static(n: u64, dyn_headers: &HTTP2DynTable) -> Option<HTTP
         61 => ("www-authenticate", ""),
         _ => ("", ""),
     };
-    if name.len() > 0 {
+    if !name.is_empty() {
         return Some(HTTP2FrameHeaderBlock {
             name: name.as_bytes().to_vec(),
             value: value.as_bytes().to_vec(),
@@ -456,7 +456,7 @@ fn http2_parse_headers_block_literal_incindex<'a>(
                 } else {
                     dyn_headers.table.push(headcopy);
                 }
-                while dyn_headers.current_size > dyn_headers.max_size && dyn_headers.table.len() > 0
+                while dyn_headers.current_size > dyn_headers.max_size && !dyn_headers.table.is_empty()
                 {
                     dyn_headers.current_size -=
                         32 + dyn_headers.table[0].name.len() + dyn_headers.table[0].value.len();
@@ -539,7 +539,7 @@ fn http2_parse_headers_block_dynamic_size<'a>(
     if (maxsize2 as usize) < dyn_headers.max_size {
         //dyn_headers.max_size is updated later with all headers
         //may evict entries
-        while dyn_headers.current_size > (maxsize2 as usize) && dyn_headers.table.len() > 0 {
+        while dyn_headers.current_size > (maxsize2 as usize) && !dyn_headers.table.is_empty() {
             // we check dyn_headers.table as we may be in best effort
             // because the previous maxsize was too big for us to retain all the headers
             dyn_headers.current_size -=
@@ -593,7 +593,7 @@ fn http2_parse_headers_blocks<'a>(
 ) -> IResult<&'a [u8], Vec<HTTP2FrameHeaderBlock>> {
     let mut blocks = Vec::new();
     let mut i3 = input;
-    while i3.len() > 0 {
+    while !i3.is_empty() {
         match http2_parse_headers_block(i3, dyn_headers) {
             Ok((rem, b)) => {
                 blocks.push(b);
index db5f1b7711e73b40dcbcb5e173c600a4c526441f..89e4085695c1f66a69f9ecc679b7378030a0418a 100644 (file)
@@ -149,7 +149,7 @@ pub extern "C" fn rs_ike_state_get_sa_attribute(
 
     if let Ok(sa) = sa_type_s {
         if tx.ike_version == 1 {
-            if tx.hdr.ikev1_transforms.len() >= 1 {
+            if !tx.hdr.ikev1_transforms.is_empty() {
                 // there should be only one chosen server_transform, check event
                 if let Some(server_transform) = tx.hdr.ikev1_transforms.first() {
                     for attr in server_transform {
index 8c58fdd9b10d029feb5b83725d035387e344bc1e..534c1232b41266f2f4c2eb84fddc12180eb7b3a2 100644 (file)
@@ -199,7 +199,7 @@ impl IKEState {
 
     fn handle_input(&mut self, input: &[u8], direction: Direction) -> AppLayerResult {
         // We're not interested in empty requests.
-        if input.len() == 0 {
+        if input.is_empty() {
             return AppLayerResult::ok();
         }
 
index d3be063c69653bbf0fd18a63dd6e01c6842d1b3d..9b77371a521f90913f98435af84f5d670a196542 100644 (file)
@@ -57,7 +57,7 @@ impl Ikev1ParticipantData {
     ) {
         self.key_exchange = key_exchange.clone();
         self.nonce = nonce.clone();
-        if self.nb_transforms == 0 && transforms.len() > 0 {
+        if self.nb_transforms == 0 && !transforms.is_empty() {
             self.transform.extend(transforms[0].iter().cloned());
         }
         self.nb_transforms += transforms.len() as u64;
@@ -146,7 +146,7 @@ pub fn handle_ikev1(
                     );
                 }
 
-                if rem.len() > 0 {
+                if !rem.is_empty() {
                     // more data left unread than should be
                     SCLogDebug!("Unread Payload Data");
                     state.set_event(IkeEvent::PayloadExtraData);
index 042fdae4cd07b55c4afc64b40581f8db01512c4c..cc5705f5808e1c85c6b4dcefbf404e073464f101 100644 (file)
@@ -138,7 +138,7 @@ fn log_ikev1(state: &IKEState, tx: &IKETransaction, jb: &mut JsonBuilder) -> Res
 
         // client data
         jb.open_object("client")?;
-        if state.ikev1_container.client.key_exchange.len() > 0 {
+        if !state.ikev1_container.client.key_exchange.is_empty() {
             jb.set_string(
                 "key_exchange_payload",
                 &state.ikev1_container.client.key_exchange,
@@ -149,7 +149,7 @@ fn log_ikev1(state: &IKEState, tx: &IKETransaction, jb: &mut JsonBuilder) -> Res
                 jb.set_uint("key_exchange_payload_length", client_key_length / 2)?;
             }
         }
-        if state.ikev1_container.client.nonce.len() > 0 {
+        if !state.ikev1_container.client.nonce.is_empty() {
             jb.set_string("nonce_payload", &state.ikev1_container.client.nonce)?;
             if let Ok(client_nonce_length) = u64::try_from(state.ikev1_container.client.nonce.len())
             {
@@ -157,7 +157,7 @@ fn log_ikev1(state: &IKEState, tx: &IKETransaction, jb: &mut JsonBuilder) -> Res
             }
         }
 
-        if tx.direction == Direction::ToServer && tx.hdr.ikev1_transforms.len() > 0 {
+        if tx.direction == Direction::ToServer && !tx.hdr.ikev1_transforms.is_empty() {
             jb.open_array("proposals")?;
             for client_transform in &tx.hdr.ikev1_transforms {
                 jb.start_object()?;
@@ -170,7 +170,7 @@ fn log_ikev1(state: &IKEState, tx: &IKETransaction, jb: &mut JsonBuilder) -> Res
 
         // server data
         jb.open_object("server")?;
-        if state.ikev1_container.server.key_exchange.len() > 0 {
+        if !state.ikev1_container.server.key_exchange.is_empty() {
             jb.set_string(
                 "key_exchange_payload",
                 &state.ikev1_container.server.key_exchange,
@@ -181,7 +181,7 @@ fn log_ikev1(state: &IKEState, tx: &IKETransaction, jb: &mut JsonBuilder) -> Res
                 jb.set_uint("key_exchange_payload_length", server_key_length / 2)?;
             }
         }
-        if state.ikev1_container.server.nonce.len() > 0 {
+        if !state.ikev1_container.server.nonce.is_empty() {
             jb.set_string("nonce_payload", &state.ikev1_container.server.nonce)?;
             if let Ok(server_nonce_length) = u64::try_from(state.ikev1_container.server.nonce.len())
             {
@@ -190,7 +190,7 @@ fn log_ikev1(state: &IKEState, tx: &IKETransaction, jb: &mut JsonBuilder) -> Res
         }
         jb.close()?; // server
 
-        if tx.hdr.ikev1_header.vendor_ids.len() > 0 {
+        if !tx.hdr.ikev1_header.vendor_ids.is_empty() {
             jb.open_array("vendor_ids")?;
             for vendor in &tx.hdr.ikev1_header.vendor_ids {
                 jb.append_string(vendor)?;
index d1fabaead14c1fbaae9a1c4364272e16c6f4e7a8..0399733c06219adf1a489d16fd8e3cc5919c528b 100644 (file)
@@ -437,7 +437,7 @@ pub unsafe extern "C" fn rs_krb5_parse_request_tcp(_flow: *const core::Flow,
         }
     };
     let mut cur_i = tcp_buffer;
-    while cur_i.len() > 0 {
+    while !cur_i.is_empty() {
         if state.record_ts == 0 {
             match be_u32(cur_i) as IResult<&[u8],u32> {
                 Ok((rem,record)) => {
@@ -495,7 +495,7 @@ pub unsafe extern "C" fn rs_krb5_parse_response_tcp(_flow: *const core::Flow,
         }
     };
     let mut cur_i = tcp_buffer;
-    while cur_i.len() > 0 {
+    while !cur_i.is_empty() {
         if state.record_tc == 0 {
             match be_u32(cur_i) as IResult<&[u8],_> {
                 Ok((rem,record)) => {
index fa69da41924e07aa71c15d52f14f9ec4b5c058a6..185aadcd05777611e08e6e0df853defe45ddefaa 100644 (file)
@@ -56,7 +56,7 @@ pub fn mime_parse_header_token(input: &[u8]) -> IResult<&[u8], (&[u8], &[u8])> {
 fn mime_parse_header_tokens(input: &[u8]) -> IResult<&[u8], MIMEHeaderTokens> {
     let (mut input, _) = take_until_and_consume(b";")(input)?;
     let mut tokens = HashMap::new();
-    while input.len() > 0 {
+    while !input.is_empty() {
         match mime_parse_header_token(input) {
             Ok((rem, t)) => {
                 tokens.insert(t.0, t.1);
index 3dd6a56017ded635da3d34c4766eb0c4ac141617..2ffc24f85825bafac0eed3e3702899f08e45a47c 100644 (file)
@@ -185,7 +185,7 @@ impl ModbusState {
 
     pub fn parse(&mut self, input: &[u8], direction: Direction) -> AppLayerResult {
         let mut rest = input;
-        while rest.len() > 0 {
+        while !rest.is_empty() {
             match MODBUS_PARSER.parse(rest, direction.clone()) {
                 Ok((inner_rest, Some(mut msg))) => {
                     match direction {
@@ -316,7 +316,7 @@ pub unsafe extern "C" fn rs_modbus_parse_request(
     _data: *const std::os::raw::c_void,
 ) -> AppLayerResult {
     let buf = stream_slice.as_slice();
-    if buf.len() == 0 {
+    if buf.is_empty() {
         if AppLayerParserStateIssetFlag(pstate, APP_LAYER_PARSER_EOF_TS) > 0 {
             return AppLayerResult::ok();
         } else {
@@ -335,7 +335,7 @@ pub unsafe extern "C" fn rs_modbus_parse_response(
     _data: *const std::os::raw::c_void,
 ) -> AppLayerResult {
     let buf = stream_slice.as_slice();
-    if buf.len() == 0 {
+    if buf.is_empty() {
         if AppLayerParserStateIssetFlag(pstate, APP_LAYER_PARSER_EOF_TC) > 0 {
             return AppLayerResult::ok();
         } else {
index 8e11abde7d69570ac53261bc1e3e2a5161d90308..ba0f6409a56e0a82239a5c76593aa7dd65b5627c 100644 (file)
@@ -131,7 +131,7 @@ pub unsafe extern "C" fn rs_mqtt_tx_get_connect_clientid(
     for msg in tx.msg.iter() {
         if let MQTTOperation::CONNECT(ref cv) = msg.op {
             let p = &cv.client_id;
-            if p.len() > 0 {
+            if !p.is_empty() {
                 *buffer = p.as_ptr();
                 *buffer_len = p.len() as u32;
                 return 1;
@@ -151,7 +151,7 @@ pub unsafe extern "C" fn rs_mqtt_tx_get_connect_username(
     for msg in tx.msg.iter() {
         if let MQTTOperation::CONNECT(ref cv) = msg.op {
             if let Some(p) = &cv.username {
-                if p.len() > 0 {
+                if !p.is_empty() {
                     *buffer = p.as_ptr();
                     *buffer_len = p.len() as u32;
                     return 1;
@@ -173,7 +173,7 @@ pub unsafe extern "C" fn rs_mqtt_tx_get_connect_password(
     for msg in tx.msg.iter() {
         if let MQTTOperation::CONNECT(ref cv) = msg.op {
             if let Some(p) = &cv.password {
-                if p.len() > 0 {
+                if !p.is_empty() {
                     *buffer = p.as_ptr();
                     *buffer_len = p.len() as u32;
                     return 1;
@@ -194,7 +194,7 @@ pub unsafe extern "C" fn rs_mqtt_tx_get_connect_willtopic(
     for msg in tx.msg.iter() {
         if let MQTTOperation::CONNECT(ref cv) = msg.op {
             if let Some(p) = &cv.will_topic {
-                if p.len() > 0 {
+                if !p.is_empty() {
                     *buffer = p.as_ptr();
                     *buffer_len = p.len() as u32;
                     return 1;
@@ -216,7 +216,7 @@ pub unsafe extern "C" fn rs_mqtt_tx_get_connect_willmessage(
     for msg in tx.msg.iter() {
         if let MQTTOperation::CONNECT(ref cv) = msg.op {
             if let Some(p) = &cv.will_message {
-                if p.len() > 0 {
+                if !p.is_empty() {
                     *buffer = p.as_ptr();
                     *buffer_len = p.len() as u32;
                     return 1;
@@ -251,7 +251,7 @@ pub unsafe extern "C" fn rs_mqtt_tx_get_publish_topic(
     for msg in tx.msg.iter() {
         if let MQTTOperation::PUBLISH(ref pubv) = msg.op {
             let p = &pubv.topic;
-            if p.len() > 0 {
+            if !p.is_empty() {
                 *buffer = p.as_ptr();
                 *buffer_len = p.len() as u32;
                 return 1;
@@ -272,7 +272,7 @@ pub unsafe extern "C" fn rs_mqtt_tx_get_publish_message(
     for msg in tx.msg.iter() {
         if let MQTTOperation::PUBLISH(ref pubv) = msg.op {
             let p = &pubv.message;
-            if p.len() > 0 {
+            if !p.is_empty() {
                 *buffer = p.as_ptr();
                 *buffer_len = p.len() as u32;
                 return 1;
@@ -295,7 +295,7 @@ pub unsafe extern "C" fn rs_mqtt_tx_get_subscribe_topic(
         if let MQTTOperation::SUBSCRIBE(ref subv) = msg.op {
             if (i as usize) < subv.topics.len() + offset {
                 let topic = &subv.topics[(i as usize) - offset];
-                if topic.topic_name.len() > 0 {
+                if !topic.topic_name.is_empty() {
                     *len = topic.topic_name.len() as u32;
                     *buf = topic.topic_name.as_ptr();
                     return 1;
@@ -321,7 +321,7 @@ pub unsafe extern "C" fn rs_mqtt_tx_get_unsubscribe_topic(
         if let MQTTOperation::UNSUBSCRIBE(ref unsubv) = msg.op {
             if (i as usize) < unsubv.topics.len() + offset {
                 let topic = &unsubv.topics[(i as usize) - offset];
-                if topic.len() > 0 {
+                if !topic.is_empty() {
                     *len = topic.len() as u32;
                     *buf = topic.as_ptr();
                     return 1;
index 22fc7de0792754ef4cd539332f2afe0ea73b98a1..09b14fe25d6f783b033a1ae2ca413e33a18c0aaa 100644 (file)
@@ -233,7 +233,7 @@ fn log_mqtt(tx: &MQTTTransaction, flags: u32, js: &mut JsonBuilder) -> Result<()
                 log_mqtt_header(js, &msg.header)?;
                 js.set_uint("message_id", unsuback.message_id as u64)?;
                 if let Some(codes) = &unsuback.reason_codes {
-                    if codes.len() > 0 {
+                    if !codes.is_empty() {
                         js.open_array("reason_codes")?;
                         for t in codes {
                             js.append_uint(*t as u64)?;
index 94b7956f7f1b2ae2958dcde6599465b743f2ae94..9dfef0cfe3de0c44d690463318855c0d2b28dc78 100644 (file)
@@ -423,7 +423,7 @@ impl MQTTState {
 
     fn parse_request(&mut self, input: &[u8]) -> AppLayerResult {
         let mut current = input;
-        if input.len() == 0 {
+        if input.is_empty() {
             return AppLayerResult::ok();
         }
 
@@ -450,7 +450,7 @@ impl MQTTState {
             }
         }
 
-        while current.len() > 0 {
+        while !current.is_empty() {
             SCLogDebug!("request: handling {}", current.len());
             match parse_message(current, self.protocol_version, self.max_msg_len) {
                 Ok((rem, msg)) => {
@@ -498,7 +498,7 @@ impl MQTTState {
 
     fn parse_response(&mut self, input: &[u8]) -> AppLayerResult {
         let mut current = input;
-        if input.len() == 0 {
+        if input.is_empty() {
             return AppLayerResult::ok();
         }
 
@@ -524,7 +524,7 @@ impl MQTTState {
             }
         }
 
-        while current.len() > 0 {
+        while !current.is_empty() {
             SCLogDebug!("response: handling {}", current.len());
             match parse_message(current, self.protocol_version, self.max_msg_len as usize) {
                 Ok((rem, msg)) => {
index fb938fb9d5dca1582cb4be8e5a726d9216a99cbf..190f88d2c47d00def85bca1cb8ead38cb8722eff 100644 (file)
@@ -114,7 +114,7 @@ fn parse_properties(input: &[u8], precond: bool) -> IResult<&[u8], Option<Vec<MQ
             // parse properties
             let mut props = Vec::<MQTTProperty>::new();
             let (rem, mut newrem) = take(proplen as usize)(rem)?;
-            while newrem.len() > 0 {
+            while !newrem.is_empty() {
                 match parse_property(newrem) {
                     Ok((rem2, val)) => {
                         props.push(val);
index 66eda9fd64cf3786f5752bcd17b386559c3a1785..f252cf2cb45c19ba836d44b4ff3fdd440801b7df 100644 (file)
@@ -99,7 +99,7 @@ fn nfs_common_header(state: &NFSState, tx: &NFSTransaction, js: &mut JsonBuilder
     let file_name = String::from_utf8_lossy(&tx.file_name);
     js.set_string("filename", &file_name)?;
 
-    if tx.file_handle.len() > 0 {
+    if !tx.file_handle.is_empty() {
         //js.set_string("handle", &nfs_handle2hex(&tx.file_handle));
         let c = nfs_handle2crc(&tx.file_handle);
         let s = format!("{:x}", c);
index 76e8a2180fc4daf79cee0571bb36f60e5d1b937b..a96e63f972ad8d8b67ca91e9dc61d424be224b5d 100644 (file)
@@ -466,7 +466,7 @@ impl NFSState {
                 mytx.response_done = true;
                 mytx.rpc_response_status = rpc_status;
                 mytx.nfs_response_status = nfs_status;
-                if mytx.file_handle.len() == 0 && resp_handle.len() > 0 {
+                if mytx.file_handle.is_empty() && !resp_handle.is_empty() {
                     mytx.file_handle = resp_handle.to_vec();
                 }
 
@@ -1212,14 +1212,14 @@ impl NFSState {
             }
             cur_i = &cur_i[consumed as usize..];
         }
-        if cur_i.len() == 0 {
+        if cur_i.is_empty() {
             return AppLayerResult::ok();
         }
         if self.ts_gap {
             SCLogDebug!("TS trying to catch up after GAP (input {})", cur_i.len());
 
             let mut _cnt = 0;
-            while cur_i.len() > 0 {
+            while !cur_i.is_empty() {
                 _cnt += 1;
                 match nfs_probe(cur_i, Direction::ToServer) {
                     1 => {
@@ -1234,7 +1234,7 @@ impl NFSState {
                     },
                     -1 => {
                         cur_i = &cur_i[1..];
-                        if cur_i.len() == 0 {
+                        if cur_i.is_empty() {
                             SCLogDebug!("all post-GAP data in this chunk was bad. Looped {} times.", _cnt);
                         }
                     },
@@ -1246,7 +1246,7 @@ impl NFSState {
             SCLogDebug!("TS GAP handling done (input {})", cur_i.len());
         }
 
-        while cur_i.len() > 0 { // min record size
+        while !cur_i.is_empty() { // min record size
             self.add_rpc_tcp_ts_pdu(flow, stream_slice, cur_i, cur_i.len() as i64);
             match parse_rpc_request_partial(cur_i) {
                 Ok((_, ref rpc_phdr)) => {
@@ -1376,14 +1376,14 @@ impl NFSState {
             }
             cur_i = &cur_i[consumed as usize..];
         }
-        if cur_i.len() == 0 {
+        if cur_i.is_empty() {
             return AppLayerResult::ok();
         }
         if self.tc_gap {
             SCLogDebug!("TC trying to catch up after GAP (input {})", cur_i.len());
 
             let mut _cnt = 0;
-            while cur_i.len() > 0 {
+            while !cur_i.is_empty() {
                 _cnt += 1;
                 match nfs_probe(cur_i, Direction::ToClient) {
                     1 => {
@@ -1398,7 +1398,7 @@ impl NFSState {
                     },
                     -1 => {
                         cur_i = &cur_i[1..];
-                        if cur_i.len() == 0 {
+                        if cur_i.is_empty() {
                             SCLogDebug!("all post-GAP data in this chunk was bad. Looped {} times.", _cnt);
                         }
                     },
@@ -1410,7 +1410,7 @@ impl NFSState {
             SCLogDebug!("TC GAP handling done (input {})", cur_i.len());
         }
 
-        while cur_i.len() > 0 {
+        while !cur_i.is_empty() {
             self.add_rpc_tcp_tc_pdu(flow, stream_slice, cur_i, cur_i.len() as i64);
             match parse_rpc_packet_header(cur_i) {
                 Ok((_, ref rpc_phdr)) => {
@@ -1473,7 +1473,7 @@ impl NFSState {
         let input = stream_slice.as_slice();
         SCLogDebug!("parse_udp_ts ({})", input.len());
         self.add_rpc_udp_ts_pdu(flow, stream_slice, input, input.len() as i64);
-        if input.len() > 0 {
+        if !input.is_empty() {
             match parse_rpc_udp_request(input) {
                 Ok((_, ref rpc_record)) => {
                     self.is_udp = true;
@@ -1505,7 +1505,7 @@ impl NFSState {
         let input = stream_slice.as_slice();
         SCLogDebug!("parse_udp_tc ({})", input.len());
         self.add_rpc_udp_tc_pdu(flow, stream_slice, input, input.len() as i64);
-        if input.len() > 0 {
+        if !input.is_empty() {
             match parse_rpc_udp_reply(input) {
                 Ok((_, ref rpc_record)) => {
                     self.is_udp = true;
index 5c3df56364eb3a495929cdfd25e13ee011c02a4a..afa96e745e38bafccdab9ceb51a7458a5e3b792a 100644 (file)
@@ -376,7 +376,7 @@ impl NFSState {
                     }
                 }
                 &Nfs4ResponseContent::PutRootFH(s) => {
-                    if s == NFS4_OK && xidmap.file_name.len() == 0 {
+                    if s == NFS4_OK && xidmap.file_name.is_empty() {
                         xidmap.file_name = b"<mount_root>".to_vec();
                         SCLogDebug!("filename {:?}", xidmap.file_name);
                     }
index 8fe69e6add292b64cd26f566b35b056530b3c8ff..30e4927b8ceba1de14f5c21ec18c993189a695c2 100644 (file)
@@ -301,7 +301,7 @@ impl PgsqlState {
 
     fn parse_request(&mut self, input: &[u8]) -> AppLayerResult {
         // We're not interested in empty requests.
-        if input.len() == 0 {
+        if input.is_empty() {
             return AppLayerResult::ok();
         }
 
@@ -320,7 +320,7 @@ impl PgsqlState {
         }
 
         let mut start = input;
-        while start.len() > 0 {
+        while !start.is_empty() {
             SCLogDebug!(
                 "In 'parse_request' State Progress is: {:?}",
                 &self.state_progress
@@ -437,7 +437,7 @@ impl PgsqlState {
 
     fn parse_response(&mut self, input: &[u8], flow: *const Flow) -> AppLayerResult {
         // We're not interested in empty responses.
-        if input.len() == 0 {
+        if input.is_empty() {
             return AppLayerResult::ok();
         }
 
@@ -453,7 +453,7 @@ impl PgsqlState {
         }
 
         let mut start = input;
-        while start.len() > 0 {
+        while !start.is_empty() {
             match PgsqlState::state_based_resp_parsing(self.state_progress, start) {
                 Ok((rem, response)) => {
                     start = rem;
index 77429ae118cd8247d1261623fc5a0d84585b8f27..e03ebdd6bf2174caecef5c4ca03960546aa8bda3 100644 (file)
@@ -100,7 +100,7 @@ fn log_template(tx: &QuicTransaction, js: &mut JsonBuilder) -> Result<(), JsonEr
             js.set_string("ua", &String::from_utf8_lossy(ua))?;
         }
     }
-    if tx.cyu.len() > 0 {
+    if !tx.cyu.is_empty() {
         js.open_array("cyu")?;
         for cyu in &tx.cyu {
             js.start_object()?;
@@ -122,7 +122,7 @@ fn log_template(tx: &QuicTransaction, js: &mut JsonBuilder) -> Result<(), JsonEr
         js.set_string("string", ja3)?;
         js.close()?;
     }
-    if tx.extv.len() > 0 {
+    if !tx.extv.is_empty() {
         js.open_array("extensions")?;
         for e in &tx.extv {
             js.start_object()?;
@@ -132,7 +132,7 @@ fn log_template(tx: &QuicTransaction, js: &mut JsonBuilder) -> Result<(), JsonEr
             }
             js.set_uint("type", etype.into())?;
 
-            if e.values.len() > 0 {
+            if !e.values.is_empty() {
                 js.open_array("values")?;
                 for i in 0..e.values.len() {
                     js.append_string(&String::from_utf8_lossy(&e.values[i]))?;
index 37c14ad9ad4cf7652f5f350e6fca211eeffd0af9..2dfe2e608f6f00713f75be3dd9f1a282064585c7 100644 (file)
@@ -229,7 +229,7 @@ impl QuicState {
                 Frame::Crypto(c) => {
                     ja3 = Some(c.ja3.clone());
                     for e in &c.extv {
-                        if e.etype == TlsExtensionType::ServerName && e.values.len() > 0 {
+                        if e.etype == TlsExtensionType::ServerName && !e.values.is_empty() {
                             sni = Some(e.values[0].to_vec());
                         }
                     }
@@ -257,7 +257,7 @@ impl QuicState {
     fn parse(&mut self, input: &[u8], to_server: bool) -> bool {
         // so as to loop over multiple quic headers in one packet
         let mut buf = input;
-        while buf.len() > 0 {
+        while !buf.is_empty() {
             match QuicHeader::from_bytes(buf, DEFAULT_DCID_LEN) {
                 Ok((rest, header)) => {
                     if (to_server && self.hello_ts) || (!to_server && self.hello_tc) {
index a9bba49320997264551c2632e4c3cbbaf875af94..1fe87839bace17c09c76dc77c625a6a011326712 100644 (file)
@@ -226,7 +226,7 @@ fn mcs_req_to_json(mcs: &McsConnectRequest, js: &mut JsonBuilder) -> Result<(),
                     &windows::os_to_string(&client.client_build, &unknown),
                 )?;
 
-                if client.client_name.len() > 0 {
+                if !client.client_name.is_empty() {
                     js.set_string("client_name", &client.client_name)?;
                 }
 
@@ -242,7 +242,7 @@ fn mcs_req_to_json(mcs: &McsConnectRequest, js: &mut JsonBuilder) -> Result<(),
                     js.set_uint("function_keys", client.keyboard_function_key as u64)?;
                 }
 
-                if client.ime_file_name.len() > 0 {
+                if !client.ime_file_name.is_empty() {
                     js.set_string("ime", &client.ime_file_name)?;
                 }
 
@@ -315,7 +315,7 @@ fn mcs_req_to_json(mcs: &McsConnectRequest, js: &mut JsonBuilder) -> Result<(),
                 }
 
                 if let Some(ref id) = client.client_dig_product_id {
-                    if id.len() > 0 {
+                    if !id.is_empty() {
                         js.set_string("id", id)?;
                     }
                 }
@@ -361,7 +361,7 @@ fn mcs_req_to_json(mcs: &McsConnectRequest, js: &mut JsonBuilder) -> Result<(),
             }
 
             McsConnectRequestChild::CsNet(ref net) => {
-                if net.channels.len() > 0 {
+                if !net.channels.is_empty() {
                     js.open_array("channels")?;
                     for channel in &net.channels {
                         js.append_string(channel)?;
index fcccd00827d0202fe952e74bee945bc6e31ec525..8d69827bf9814fe2891e567e3d5d386fe7e4348f 100644 (file)
@@ -520,7 +520,7 @@ fn parse_x224_connection_request(input: &[u8]) -> IResult<&[u8], X224ConnectionR
     };
 
     let (j1, cookie) = {
-        if data.len() > 0 {
+        if !data.is_empty() {
             match opt(parse_rdp_cookie)(data) {
                 Ok((remainder, opt)) => (remainder, opt),
                 Err(e) => return Err(e),
@@ -531,7 +531,7 @@ fn parse_x224_connection_request(input: &[u8]) -> IResult<&[u8], X224ConnectionR
     };
 
     let (j2, negotiation_request) = {
-        if j1.len() > 0 {
+        if !j1.is_empty() {
             match opt(parse_negotiation_request)(j1) {
                 Ok((remainder, opt)) => (remainder, opt),
                 Err(e) => return Err(e),
@@ -782,7 +782,7 @@ fn parse_mcs_connect(input: &[u8]) -> IResult<&[u8], McsConnectRequest, RdpError
             Err(Err::Incomplete(i)) => return Err(Err::Incomplete(i)),
             Err(Err::Failure(_)) | Err(Err::Error(_)) => break,
         };
-        if remainder.len() == 0 {
+        if remainder.is_empty() {
             break;
         }
     }
index e931ed2368df55384c826f540f9d7fdc891fe4ff..d150488881719ffee40b2619721ead541d0ddfd6 100644 (file)
@@ -176,7 +176,7 @@ impl RdpState {
         let mut available = input;
 
         loop {
-            if available.len() == 0 {
+            if available.is_empty() {
                 return AppLayerResult::ok();
             }
             if self.tls_parsing {
@@ -269,7 +269,7 @@ impl RdpState {
         let mut available = input;
 
         loop {
-            if available.len() == 0 {
+            if available.is_empty() {
                 return AppLayerResult::ok();
             }
             if self.tls_parsing {
@@ -400,7 +400,7 @@ pub unsafe extern "C" fn rs_rdp_state_tx_free(state: *mut std::os::raw::c_void,
 
 /// probe for T.123 type identifier, as each message is encapsulated in T.123
 fn probe_rdp(input: &[u8]) -> bool {
-    input.len() > 0 && input[0] == TpktVersion::T123 as u8
+    !input.is_empty() && input[0] == TpktVersion::T123 as u8
 }
 
 /// probe for T.123 message, whether to client or to server
@@ -424,7 +424,7 @@ pub unsafe extern "C" fn rs_rdp_probe_ts_tc(
 
 /// probe for TLS
 fn probe_tls_handshake(input: &[u8]) -> bool {
-    input.len() > 0 && input[0] == u8::from(TlsRecordType::Handshake)
+    !input.is_empty() && input[0] == u8::from(TlsRecordType::Handshake)
 }
 
 //
index d30014a13999b7a4fa4a73a47d00108862a9a428..7cfd7776b3017c29d1c9bbd01307ecde68cbaf0d 100644 (file)
@@ -28,7 +28,7 @@ pub unsafe extern "C" fn rs_rfb_tx_get_name(
 ) -> u8 {
     if let Some(ref r) = tx.tc_server_init {
         let p = &r.name;
-        if p.len() > 0 {
+        if !p.is_empty() {
             *buffer = p.as_ptr();
             *buffer_len = p.len() as u32;
             return 1;
index 60c0e4adb62ef271943438205c45078df9571e3d..b17afba397bab5a88233ebf30abc091dc2700347 100644 (file)
@@ -150,7 +150,7 @@ impl RFBState {
 
     fn parse_request(&mut self, input: &[u8]) -> AppLayerResult {
         // We're not interested in empty requests.
-        if input.len() == 0 {
+        if input.is_empty() {
             return AppLayerResult::ok();
         }
 
@@ -158,7 +158,7 @@ impl RFBState {
         let mut consumed = 0;
         SCLogDebug!("request_state {}, input_len {}", self.state, input.len());
         loop {
-            if current.len() == 0 {
+            if current.is_empty() {
                 return AppLayerResult::ok();
             }
             match self.state {
@@ -279,7 +279,7 @@ impl RFBState {
 
     fn parse_response(&mut self, input: &[u8]) -> AppLayerResult {
         // We're not interested in empty responses.
-        if input.len() == 0 {
+        if input.is_empty() {
             return AppLayerResult::ok();
         }
 
@@ -287,7 +287,7 @@ impl RFBState {
         let mut consumed = 0;
         SCLogDebug!("response_state {}, response_len {}", self.state, input.len());
         loop {
-            if current.len() == 0 {
+            if current.is_empty() {
                 return AppLayerResult::ok();
             }
             match self.state {
index 7098ea54a3017b7ebec40700d945790d0e114cc6..63f636529a3437f4f95e0f82a26681f15ba04d08 100644 (file)
@@ -29,7 +29,7 @@ pub unsafe extern "C" fn rs_sip_tx_get_method(
 ) -> u8 {
     if let Some(ref r) = tx.request {
         let m = &r.method;
-        if m.len() > 0 {
+        if !m.is_empty() {
             *buffer = m.as_ptr();
             *buffer_len = m.len() as u32;
             return 1;
@@ -50,7 +50,7 @@ pub unsafe extern "C" fn rs_sip_tx_get_uri(
 ) -> u8 {
     if let Some(ref r) = tx.request {
         let p = &r.path;
-        if p.len() > 0 {
+        if !p.is_empty() {
             *buffer = p.as_ptr();
             *buffer_len = p.len() as u32;
             return 1;
@@ -74,7 +74,7 @@ pub unsafe extern "C" fn rs_sip_tx_get_protocol(
         Direction::ToServer => {
             if let Some(ref r) = tx.request {
                 let v = &r.version;
-                if v.len() > 0 {
+                if !v.is_empty() {
                     *buffer = v.as_ptr();
                     *buffer_len = v.len() as u32;
                     return 1;
@@ -84,7 +84,7 @@ pub unsafe extern "C" fn rs_sip_tx_get_protocol(
         Direction::ToClient => {
             if let Some(ref r) = tx.response {
                 let v = &r.version;
-                if v.len() > 0 {
+                if !v.is_empty() {
                     *buffer = v.as_ptr();
                     *buffer_len = v.len() as u32;
                     return 1;
@@ -107,7 +107,7 @@ pub unsafe extern "C" fn rs_sip_tx_get_stat_code(
 ) -> u8 {
     if let Some(ref r) = tx.response {
         let c = &r.code;
-        if c.len() > 0 {
+        if !c.is_empty() {
             *buffer = c.as_ptr();
             *buffer_len = c.len() as u32;
             return 1;
@@ -128,7 +128,7 @@ pub unsafe extern "C" fn rs_sip_tx_get_stat_msg(
 ) -> u8 {
     if let Some(ref r) = tx.response {
         let re = &r.reason;
-        if re.len() > 0 {
+        if !re.is_empty() {
             *buffer = re.as_ptr();
             *buffer_len = re.len() as u32;
             return 1;
@@ -148,7 +148,7 @@ pub unsafe extern "C" fn rs_sip_tx_get_request_line(
     buffer_len: *mut u32,
 ) -> u8 {
     if let Some(ref r) = tx.request_line {
-        if r.len() > 0 {
+        if !r.is_empty() {
             *buffer = r.as_ptr();
             *buffer_len = r.len() as u32;
             return 1;
@@ -168,7 +168,7 @@ pub unsafe extern "C" fn rs_sip_tx_get_response_line(
     buffer_len: *mut u32,
 ) -> u8 {
     if let Some(ref r) = tx.response_line {
-        if r.len() > 0 {
+        if !r.is_empty() {
             *buffer = r.as_ptr();
             *buffer_len = r.len() as u32;
             return 1;
index b21c016a1a731c5bb2464794fbcd7b6eb8dfde7d..2be850c528698f5a20c226c38b120bf2442471ce 100644 (file)
@@ -268,7 +268,7 @@ pub fn smb_write_dcerpc_record<'b>(state: &mut SMBState,
                             is_bind = true;
                             SCLogDebug!("SMB DCERPC {:?} BIND {:?}", dcer, bindr);
 
-                            if bindr.ifaces.len() > 0 {
+                            if !bindr.ifaces.is_empty() {
                                 let mut ifaces: Vec<DCERPCIface> = Vec::new();
                                 for i in bindr.ifaces {
                                     let x = if dcer.little_endian == true {
@@ -470,7 +470,7 @@ pub fn smb_read_dcerpc_record<'b>(state: &mut SMBState,
 
     let mut malformed = false;
 
-    if data.len() == 0 {
+    if data.is_empty() {
         SCLogDebug!("weird: no DCERPC data"); // TODO
         // TODO set event?
         return false;
index 4376a71749db5d7de40ed28c9a8435a3d6c6a310..f7a48d58aa91d77a2812b961a20275de0d35ad9b 100644 (file)
@@ -84,7 +84,7 @@ pub unsafe extern "C" fn rs_smb_tx_get_stub_data(tx: &mut SMBTransaction,
             } else {
                 &x.stub_data_tc
             };
-            if vref.len() > 0 {
+            if !vref.is_empty() {
                 *buffer = vref.as_ptr();
                 *buffer_len = vref.len() as u32;
                 return 1;
index 4a2cb43b22c8e8db58fff7292444230563ef87c4..747606ed06bb065bda81b54f5a32e1b153dd6568 100644 (file)
@@ -198,7 +198,7 @@ fn smb_common_header(jsb: &mut JsonBuilder, state: &SMBState, tx: &SMBTransactio
         Some(SMBTransactionTypeData::CREATE(ref x)) => {
             let mut name_raw = x.filename.to_vec();
             name_raw.retain(|&i|i != 0x00);
-            if name_raw.len() > 0 {
+            if !name_raw.is_empty() {
                 let name = String::from_utf8_lossy(&name_raw);
                 if x.directory {
                     jsb.set_string("directory", &name)?;
@@ -407,7 +407,7 @@ fn smb_common_header(jsb: &mut JsonBuilder, state: &SMBState, tx: &SMBTransactio
         Some(SMBTransactionTypeData::SETFILEPATHINFO(ref x)) => {
             let mut name_raw = x.filename.to_vec();
             name_raw.retain(|&i|i != 0x00);
-            if name_raw.len() > 0 {
+            if !name_raw.is_empty() {
                 let name = String::from_utf8_lossy(&name_raw);
                 jsb.set_string("filename", &name)?;
             } else {
index 35fb59bec293f32902fc68ddbf59bb24e81c36b0..90f520abe2972fd55b911356ab2e01632c49b1a9 100644 (file)
@@ -1360,13 +1360,13 @@ impl SMBState {
             }
             cur_i = &cur_i[consumed as usize..];
         }
-        if cur_i.len() == 0 {
+        if cur_i.is_empty() {
             return AppLayerResult::ok();
         }
         // gap
         if self.ts_gap {
             SCLogDebug!("TS trying to catch up after GAP (input {})", cur_i.len());
-            while cur_i.len() > 0 { // min record size
+            while !cur_i.is_empty() { // min record size
                 match search_smb_record(cur_i) {
                     Ok((_, pg)) => {
                         SCLogDebug!("smb record found");
@@ -1394,7 +1394,7 @@ impl SMBState {
                 }
             }
         }
-        while cur_i.len() > 0 { // min record size
+        while !cur_i.is_empty() { // min record size
             match parse_nbss_record(cur_i) {
                 Ok((rem, ref nbss_hdr)) => {
                     SCLogDebug!("nbss frame offset {} len {}", stream_slice.offset_from(cur_i), cur_i.len() - rem.len());
@@ -1435,7 +1435,7 @@ impl SMBState {
                                     }
                                 } else if smb.version == 0xfe_u8 { // SMB2
                                     let mut nbss_data = nbss_hdr.data;
-                                    while nbss_data.len() > 0 {
+                                    while !nbss_data.is_empty() {
                                         SCLogDebug!("SMBv2 record");
                                         match parse_smb2_request_record(nbss_data) {
                                             Ok((nbss_data_rem, ref smb_record)) => {
@@ -1467,7 +1467,7 @@ impl SMBState {
                                 } else if smb.version == 0xfd_u8 { // SMB3 transform
 
                                     let mut nbss_data = nbss_hdr.data;
-                                    while nbss_data.len() > 0 {
+                                    while !nbss_data.is_empty() {
                                         SCLogDebug!("SMBv3 transform record");
                                         match parse_smb3_transform_record(nbss_data) {
                                             Ok((nbss_data_rem, ref _smb3_record)) => {
@@ -1692,13 +1692,13 @@ impl SMBState {
             }
             cur_i = &cur_i[consumed as usize..];
         }
-        if cur_i.len() == 0 {
+        if cur_i.is_empty() {
             return AppLayerResult::ok();
         }
         // gap
         if self.tc_gap {
             SCLogDebug!("TC trying to catch up after GAP (input {})", cur_i.len());
-            while cur_i.len() > 0 { // min record size
+            while !cur_i.is_empty() { // min record size
                 match search_smb_record(cur_i) {
                     Ok((_, pg)) => {
                         SCLogDebug!("smb record found");
@@ -1726,7 +1726,7 @@ impl SMBState {
                 }
             }
         }
-        while cur_i.len() > 0 { // min record size
+        while !cur_i.is_empty() { // min record size
             match parse_nbss_record(cur_i) {
                 Ok((rem, ref nbss_hdr)) => {
                     SCLogDebug!("nbss record offset {} len {}", stream_slice.offset_from(cur_i), cur_i.len() - rem.len());
@@ -1761,7 +1761,7 @@ impl SMBState {
                                     }
                                 } else if smb.version == 0xfe_u8 { // SMB2
                                     let mut nbss_data = nbss_hdr.data;
-                                    while nbss_data.len() > 0 {
+                                    while !nbss_data.is_empty() {
                                         SCLogDebug!("SMBv2 record");
                                         match parse_smb2_response_record(nbss_data) {
                                             Ok((nbss_data_rem, ref smb_record)) => {
@@ -1786,7 +1786,7 @@ impl SMBState {
                                     }
                                 } else if smb.version == 0xfd_u8 { // SMB3 transform
                                     let mut nbss_data = nbss_hdr.data;
-                                    while nbss_data.len() > 0 {
+                                    while !nbss_data.is_empty() {
                                         SCLogDebug!("SMBv3 transform record");
                                         match parse_smb3_transform_record(nbss_data) {
                                             Ok((nbss_data_rem, ref _smb3_record)) => {
index 5ca1da5207bd132fdcef8b6b8ccc374735848373..ec24d7e1c0ae4735f5f975da9dfb69cf1992f427 100644 (file)
@@ -433,7 +433,7 @@ fn smb1_request_record_one<'b>(state: &mut SMBState, r: &SmbRecord<'b>, command:
                     let mut bad_dialects = false;
                     let mut dialects : Vec<Vec<u8>> = Vec::new();
                     for d in &pr.dialects {
-                        if d.len() == 0 {
+                        if d.is_empty() {
                             bad_dialects = true;
                             continue;
                         } else if d.len() == 1 {
@@ -1126,7 +1126,7 @@ pub fn smb1_read_response_record<'b>(state: &mut SMBState, r: &SmbRecord<'b>, an
 /// configured to do so, or if this is a tx especially
 /// for setting an event.
 fn smb1_request_record_generic<'b>(state: &mut SMBState, r: &SmbRecord<'b>, events: Vec<SMBEvent>) {
-    if smb1_create_new_tx(r.command) || events.len() > 0 {
+    if smb1_create_new_tx(r.command) || !events.is_empty() {
         let tx_key = SMBCommonHdr::from1(r, SMBHDR_TYPE_GENERICTX);
         let tx = state.new_generic_tx(1, r.command as u16, tx_key);
         tx.set_events(events);
@@ -1149,7 +1149,7 @@ fn smb1_response_record_generic<'b>(state: &mut SMBState, r: &SmbRecord<'b>, eve
         },
         None => {},
     }
-    if events.len() > 0 {
+    if !events.is_empty() {
         let tx = state.new_generic_tx(1, r.command as u16, tx_key);
         tx.request_done = true;
         tx.response_done = true;
index 28ff70a066fa7cf214ea1e4621efa401889c50a5..77e4f35fe090edf4fa32666f80af3e3eda9d9f9d 100644 (file)
@@ -188,7 +188,7 @@ pub fn smb2_read_response_record<'b>(state: &mut SMBState, r: &Smb2Record<'b>)
                     Some(n) => (n.name.to_vec(), n.is_pipe),
                     _ => { (Vec::new(), false) },
                 };
-                let mut is_dcerpc = if is_pipe || (share_name.len() == 0 && !is_pipe) {
+                let mut is_dcerpc = if is_pipe || (share_name.is_empty() && !is_pipe) {
                     state.get_service_for_guid(&file_guid).1
                 } else {
                     false
@@ -196,7 +196,7 @@ pub fn smb2_read_response_record<'b>(state: &mut SMBState, r: &Smb2Record<'b>)
                 SCLogDebug!("SMBv2/READ: share_name {:?} is_pipe {} is_dcerpc {}",
                         share_name, is_pipe, is_dcerpc);
 
-                if share_name.len() == 0 && !is_pipe {
+                if share_name.is_empty() && !is_pipe {
                     SCLogDebug!("SMBv2/READ: no tree connect seen, we don't know if we are a pipe");
 
                     if smb_dcerpc_probe(rd.data) == true {
@@ -327,7 +327,7 @@ pub fn smb2_write_request_record<'b>(state: &mut SMBState, r: &Smb2Record<'b>)
                     Some(n) => { (n.name.to_vec(), n.is_pipe) },
                     _ => { (Vec::new(), false) },
                 };
-                let mut is_dcerpc = if is_pipe || (share_name.len() == 0 && !is_pipe) {
+                let mut is_dcerpc = if is_pipe || (share_name.is_empty() && !is_pipe) {
                     state.get_service_for_guid(wr.guid).1
                 } else {
                     false
@@ -336,7 +336,7 @@ pub fn smb2_write_request_record<'b>(state: &mut SMBState, r: &Smb2Record<'b>)
                         share_name, is_pipe, is_dcerpc);
 
                 // if we missed the TREE connect we can't be sure if 'is_dcerpc' is correct
-                if share_name.len() == 0 && !is_pipe {
+                if share_name.is_empty() && !is_pipe {
                     SCLogDebug!("SMBv2/WRITE: no tree connect seen, we don't know if we are a pipe");
 
                     if smb_dcerpc_probe(wr.data) == true {
index 1ee2248448e8ef4de7822c283ab782859255ab12..cc5b3cb7a2103454c88112dbaa7a3faf7135dd2a 100644 (file)
@@ -27,7 +27,7 @@ pub fn smb_get_unicode_string(blob: &[u8]) -> IResult<&[u8], Vec<u8>, SmbError>
     SCLogDebug!("get_unicode_string: blob {} {:?}", blob.len(), blob);
     let mut name : Vec<u8> = Vec::new();
     let mut c = blob;
-    while c.len() >= 1 {
+    while !c.is_empty() {
         if c.len() == 1 && c[0] == 0 {
             let rem = &c[1..];
             SCLogDebug!("get_unicode_string: name {:?}", name);
index bd04dec36d2a12d0e65743ce23028ada19446321..06c22e81f6ad3c79b277d6ad8692f3d5af2d7e4a 100644 (file)
@@ -59,7 +59,7 @@ fn snmp_log_response(jsb: &mut JsonBuilder, state: &mut SNMPState, tx: &mut SNMP
                     },
                     _ => ()
                 }
-                if info.vars.len() > 0 {
+                if !info.vars.is_empty() {
                     jsb.open_array("vars")?;
                     for var in info.vars.iter() {
                         jsb.append_string(&var.to_string())?;
index d806bb1878a3fc7188c777ce3aa412d8b840294f..6aa18cdac781fb3ee9ec380d754786490b69017e 100644 (file)
@@ -27,7 +27,7 @@ pub unsafe extern "C" fn rs_ssh_tx_get_protocol(
     match direction.into() {
         Direction::ToServer => {
             let m = &tx.cli_hdr.protover;
-            if m.len() > 0 {
+            if !m.is_empty() {
                 *buffer = m.as_ptr();
                 *buffer_len = m.len() as u32;
                 return 1;
@@ -35,7 +35,7 @@ pub unsafe extern "C" fn rs_ssh_tx_get_protocol(
         }
         Direction::ToClient => {
             let m = &tx.srv_hdr.protover;
-            if m.len() > 0 {
+            if !m.is_empty() {
                 *buffer = m.as_ptr();
                 *buffer_len = m.len() as u32;
                 return 1;
@@ -56,7 +56,7 @@ pub unsafe extern "C" fn rs_ssh_tx_get_software(
     match direction.into() {
         Direction::ToServer => {
             let m = &tx.cli_hdr.swver;
-            if m.len() > 0 {
+            if !m.is_empty() {
                 *buffer = m.as_ptr();
                 *buffer_len = m.len() as u32;
                 return 1;
@@ -64,7 +64,7 @@ pub unsafe extern "C" fn rs_ssh_tx_get_software(
         }
         Direction::ToClient => {
             let m = &tx.srv_hdr.swver;
-            if m.len() > 0 {
+            if !m.is_empty() {
                 *buffer = m.as_ptr();
                 *buffer_len = m.len() as u32;
                 return 1;
@@ -88,7 +88,7 @@ pub unsafe extern "C" fn rs_ssh_tx_get_hassh(
     match direction.into() {
         Direction::ToServer => {
             let m = &tx.cli_hdr.hassh;
-            if m.len() > 0 {
+            if !m.is_empty() {
                 *buffer = m.as_ptr();
                 *buffer_len = m.len() as u32;
                 return 1;
@@ -96,7 +96,7 @@ pub unsafe extern "C" fn rs_ssh_tx_get_hassh(
         }
         Direction::ToClient => {
             let m = &tx.srv_hdr.hassh;
-            if m.len() > 0 {
+            if !m.is_empty() {
                 *buffer = m.as_ptr();
                 *buffer_len = m.len() as u32;
                 return 1;
@@ -120,7 +120,7 @@ pub unsafe extern "C" fn rs_ssh_tx_get_hassh_string(
     match direction.into() {
         Direction::ToServer => {
             let m = &tx.cli_hdr.hassh_string;
-            if m.len() > 0 {
+            if !m.is_empty() {
                 *buffer = m.as_ptr();
                 *buffer_len = m.len() as u32;
                 return 1;
@@ -128,7 +128,7 @@ pub unsafe extern "C" fn rs_ssh_tx_get_hassh_string(
         }
         Direction::ToClient => {
             let m = &tx.srv_hdr.hassh_string;
-            if m.len() > 0 {
+            if !m.is_empty() {
                 *buffer = m.as_ptr();
                 *buffer_len = m.len() as u32;
                 return 1;
index 30823b61b61f9a3e0025bb8960a176236aece6e6..9bc7d7c33f393ed2fce5495babd04b95b072bbc1 100644 (file)
@@ -19,39 +19,39 @@ use super::ssh::SSHTransaction;
 use crate::jsonbuilder::{JsonBuilder, JsonError};
 
 fn log_ssh(tx: &SSHTransaction, js: &mut JsonBuilder) -> Result<bool, JsonError> {
-    if tx.cli_hdr.protover.len() == 0 && tx.srv_hdr.protover.len() == 0 {
+    if tx.cli_hdr.protover.is_empty() && tx.srv_hdr.protover.is_empty() {
         return Ok(false);
     }
-    if tx.cli_hdr.protover.len() > 0 {
+    if !tx.cli_hdr.protover.is_empty() {
         js.open_object("client")?;
         js.set_string_from_bytes("proto_version", &tx.cli_hdr.protover)?;
-        if tx.cli_hdr.swver.len() > 0 {
+        if !tx.cli_hdr.swver.is_empty() {
             js.set_string_from_bytes("software_version", &tx.cli_hdr.swver)?;
         }
-        if tx.cli_hdr.hassh.len() > 0 || tx.cli_hdr.hassh_string.len() > 0 {
+        if !tx.cli_hdr.hassh.is_empty() || !tx.cli_hdr.hassh_string.is_empty() {
             js.open_object("hassh")?;
-            if tx.cli_hdr.hassh.len() > 0 {
+            if !tx.cli_hdr.hassh.is_empty() {
                 js.set_string_from_bytes("hash", &tx.cli_hdr.hassh)?;
             }
-            if tx.cli_hdr.hassh_string.len() > 0 {
+            if !tx.cli_hdr.hassh_string.is_empty() {
                 js.set_string_from_bytes("string", &tx.cli_hdr.hassh_string)?;
             }
             js.close()?;
         }
         js.close()?;
     }
-    if tx.srv_hdr.protover.len() > 0 {
+    if !tx.srv_hdr.protover.is_empty() {
         js.open_object("server")?;
         js.set_string_from_bytes("proto_version", &tx.srv_hdr.protover)?;
-        if tx.srv_hdr.swver.len() > 0 {
+        if !tx.srv_hdr.swver.is_empty() {
             js.set_string_from_bytes("software_version", &tx.srv_hdr.swver)?;
         }
-        if tx.srv_hdr.hassh.len() > 0 || tx.srv_hdr.hassh_string.len() > 0 {
+        if !tx.srv_hdr.hassh.is_empty() || !tx.srv_hdr.hassh_string.is_empty() {
             js.open_object("hassh")?;
-            if tx.srv_hdr.hassh.len() > 0 {
+            if !tx.srv_hdr.hassh.is_empty() {
                 js.set_string_from_bytes("hash", &tx.srv_hdr.hassh)?;
             }
-            if tx.srv_hdr.hassh_string.len() > 0 {
+            if !tx.srv_hdr.hassh_string.is_empty() {
                 js.set_string_from_bytes("string", &tx.srv_hdr.hassh_string)?;
             }
             js.close()?;
index 2ac42e11dbb8346adaac2fac15bd64aea58815e4..912a6ba16d709330b78f28f0c2c1e47b20a1fa61 100644 (file)
@@ -151,7 +151,7 @@ impl SSHState {
             }
         }
         //parse records out of input
-        while input.len() > 0 {
+        while !input.is_empty() {
             match parser::ssh_parse_record(input) {
                 Ok((rem, head)) => {
                     SCLogDebug!("SSH valid record {}", head);
@@ -274,7 +274,7 @@ impl SSHState {
             Ok((rem, line)) => {
                 if let Ok((_, banner)) = parser::ssh_parse_banner(line) {
                     hdr.protover.extend(banner.protover);
-                    if banner.swver.len() > 0 {
+                    if !banner.swver.is_empty() {
                         hdr.swver.extend(banner.swver);
                     }
                     hdr.flags = SSHConnectionState::SshStateBannerDone;
@@ -310,7 +310,7 @@ impl SSHState {
                     );
                     if let Ok((_, banner)) = parser::ssh_parse_banner(input) {
                         hdr.protover.extend(banner.protover);
-                        if banner.swver.len() > 0 {
+                        if !banner.swver.is_empty() {
                             hdr.swver.extend(banner.swver);
                         }
                         hdr.flags = SSHConnectionState::SshStateBannerWaitEol;
index f9998cff85fd13764b88075ca24928a20c826278..416932c4c20f68b84fc2aa623791001c96514d4f 100644 (file)
@@ -152,7 +152,7 @@ impl TelnetState {
         &mut self, flow: *const Flow, stream_slice: &StreamSlice, input: &[u8],
     ) -> AppLayerResult {
         // We're not interested in empty requests.
-        if input.len() == 0 {
+        if input.is_empty() {
             return AppLayerResult::ok();
         }
 
@@ -170,7 +170,7 @@ impl TelnetState {
         }
 
         let mut start = input;
-        while start.len() > 0 {
+        while !start.is_empty() {
             if self.request_frame.is_none() {
                 self.request_frame = Frame::new(
                     flow,
@@ -262,7 +262,7 @@ impl TelnetState {
 
     fn parse_response(&mut self, flow: *const Flow, stream_slice: &StreamSlice, input: &[u8]) -> AppLayerResult {
         // We're not interested in empty responses.
-        if input.len() == 0 {
+        if input.is_empty() {
             return AppLayerResult::ok();
         }
 
@@ -278,7 +278,7 @@ impl TelnetState {
             self.response_gap = false;
         }
         let mut start = input;
-        while start.len() > 0 {
+        while !start.is_empty() {
             if self.response_frame.is_none() {
                 self.response_frame = Frame::new(flow, stream_slice, start, -1 as i64, TelnetFrameType::Pdu as u8);
             }