mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-09-02 15:45:25 +00:00
Silence cppcheck 2.2 false positive in udp_recv()
cppcheck 2.2 reports the following false positive: lib/dns/dispatch.c:1239:14: warning: Either the condition 'resp==NULL' is redundant or there is possible null pointer dereference: resp. [nullPointerRedundantCheck] if (disp != resp->disp) { ^ lib/dns/dispatch.c:1210:11: note: Assuming that condition 'resp==NULL' is not redundant if (resp == NULL) { ^ lib/dns/dispatch.c:1239:14: note: Null pointer dereference if (disp != resp->disp) { ^ Apparently this version of cppcheck gets confused about conditional "goto" statements because line 1239 can never be reached if 'resp' is NULL. Move a code block to prevent the above false positive from being reported without affecting the processing logic.
This commit is contained in:
@@ -1217,11 +1217,6 @@ udp_recv(isc_event_t *ev_in, dns_dispatch_t *disp, dispsocket_t *dispsock) {
|
|||||||
"search for response in bucket %d: %s", bucket,
|
"search for response in bucket %d: %s", bucket,
|
||||||
(resp == NULL ? "not found" : "found"));
|
(resp == NULL ? "not found" : "found"));
|
||||||
|
|
||||||
if (resp == NULL) {
|
|
||||||
inc_stats(mgr, dns_resstatscounter_mismatch);
|
|
||||||
free_buffer(disp, ev->region.base, ev->region.length);
|
|
||||||
goto unlock;
|
|
||||||
}
|
|
||||||
} else if (resp->id != id ||
|
} else if (resp->id != id ||
|
||||||
!isc_sockaddr_equal(&ev->address, &resp->host)) {
|
!isc_sockaddr_equal(&ev->address, &resp->host)) {
|
||||||
dispatch_log(disp, LVL(90),
|
dispatch_log(disp, LVL(90),
|
||||||
@@ -1231,6 +1226,12 @@ udp_recv(isc_event_t *ev_in, dns_dispatch_t *disp, dispsocket_t *dispsock) {
|
|||||||
goto unlock;
|
goto unlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (resp == NULL) {
|
||||||
|
inc_stats(mgr, dns_resstatscounter_mismatch);
|
||||||
|
free_buffer(disp, ev->region.base, ev->region.length);
|
||||||
|
goto unlock;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Now that we have the original dispatch the query was sent
|
* Now that we have the original dispatch the query was sent
|
||||||
* from check that the address and port the response was
|
* from check that the address and port the response was
|
||||||
|
Reference in New Issue
Block a user