]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
dns: never return error on UDP DNS
authorJason Ish <jason.ish@oisf.net>
Sun, 15 Jan 2023 16:05:29 +0000 (10:05 -0600)
committerVictor Julien <vjulien@oisf.net>
Tue, 24 Jan 2023 09:44:49 +0000 (10:44 +0100)
UDP parsers should never return error as it should indicate to Suricata
that an unrecoverable error has occurred.  UDP being record based for
the most part is almost always recoverable, at least for protocols like
DNS.

rust/src/dns/dns.rs

index c21abdd34f113cdbbe447eff60acc0fd9637e06a..347fbdabd94ae5e1371b1937dfbe35bc57e144d0 100644 (file)
@@ -767,11 +767,8 @@ pub unsafe extern "C" fn rs_dns_parse_request(
     stream_slice: StreamSlice, _data: *const std::os::raw::c_void,
 ) -> AppLayerResult {
     let state = cast_pointer!(state, DNSState);
-    if state.parse_request_udp(flow, stream_slice) {
-        AppLayerResult::ok()
-    } else {
-        AppLayerResult::err()
-    }
+    state.parse_request_udp(flow, stream_slice);
+    AppLayerResult::ok()
 }
 
 #[no_mangle]
@@ -780,11 +777,8 @@ pub unsafe extern "C" fn rs_dns_parse_response(
     stream_slice: StreamSlice, _data: *const std::os::raw::c_void,
 ) -> AppLayerResult {
     let state = cast_pointer!(state, DNSState);
-    if state.parse_response_udp(flow, stream_slice) {
-        AppLayerResult::ok()
-    } else {
-        AppLayerResult::err()
-    }
+    state.parse_response_udp(flow, stream_slice);
+    AppLayerResult::ok()
 }
 
 /// C binding parse a DNS request. Returns 1 on success, -1 on failure.