net: Clarify early exit condition
On first glance, the loop in qmp_query_rx_filter() has early return paths that could leak any allocation of filter_list from a previous iteration. But on closer inspection, it is obvious that all of the early exits are guarded by has_name, and that the bulk of the loop body can be executed at most once if the user is filtering by name, thus, any early exit coincides with an empty list. Add asserts to make this obvious. Signed-off-by: Eric Blake <eblake@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.com> Message-Id: <20210113221013.390592-2-eblake@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Signed-off-by: Markus Armbruster <armbru@redhat.com>
This commit is contained in:
parent
bf159f0bdc
commit
e9d635ea18
@ -1227,6 +1227,7 @@ RxFilterInfoList *qmp_query_rx_filter(bool has_name, const char *name,
|
|||||||
if (nc->info->type != NET_CLIENT_DRIVER_NIC) {
|
if (nc->info->type != NET_CLIENT_DRIVER_NIC) {
|
||||||
if (has_name) {
|
if (has_name) {
|
||||||
error_setg(errp, "net client(%s) isn't a NIC", name);
|
error_setg(errp, "net client(%s) isn't a NIC", name);
|
||||||
|
assert(!filter_list);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
@ -1252,6 +1253,7 @@ RxFilterInfoList *qmp_query_rx_filter(bool has_name, const char *name,
|
|||||||
} else if (has_name) {
|
} else if (has_name) {
|
||||||
error_setg(errp, "net client(%s) doesn't support"
|
error_setg(errp, "net client(%s) doesn't support"
|
||||||
" rx-filter querying", name);
|
" rx-filter querying", name);
|
||||||
|
assert(!filter_list);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user