netlink: fix allocation failure handling in dump_features()
On allocation failure, dump_features() would set ret to -ENOMEM but then
return 0 anyway. As there is nothing to free in this case anyway, the
easiest fix is to simply return -ENOMEM rather than jumping to out_free
label - which can be dropped as well as this was its only use.
Fixes: f2c17e107900 ("netlink: add netlink handler for gfeatures (-k)")
Reported-by: Ivan Vecera <ivecera@redhat.com>
Signed-off-by: Michal Kubecek <mkubecek@suse.cz>
diff --git a/netlink/features.c b/netlink/features.c
index 3f12404..2a0899e 100644
--- a/netlink/features.c
+++ b/netlink/features.c
@@ -117,11 +117,9 @@
ret = prepare_feature_results(tb, &results);
if (ret < 0)
return -EFAULT;
-
- ret = -ENOMEM;
feature_flags = calloc(results.count, sizeof(feature_flags[0]));
if (!feature_flags)
- goto out_free;
+ return -ENOMEM;
/* map netdev features to legacy flags */
for (i = 0; i < results.count; i++) {
@@ -182,7 +180,6 @@
dump_feature(&results, NULL, NULL, i, name, "");
}
-out_free:
free(feature_flags);
return 0;
}