dns: never return error on UDP DNS

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.
pull/8430/head
Jason Ish 4 years ago committed by Victor Julien
parent d720ead470
commit fab3f36b8c

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

Loading…
Cancel
Save