summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoachim Wiberg <troglobit@gmail.com>2022-12-28 13:53:10 +0100
committerJoachim Wiberg <troglobit@gmail.com>2022-12-28 14:11:08 +0100
commit400084133c5535d67a1f3a6a7b044482f8009bc5 (patch)
treeb24456e957853d85ff614a3e603edc037e7ff1ea
parentba040b6b9484664716902c8b18cdbce09615659a (diff)
downloadlibnet-400084133c5535d67a1f3a6a7b044482f8009bc5.tar.gz
src: reduce code duplication and protect against NULL ptr deref
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
-rw-r--r--src/libnet_if_addr.c27
1 files changed, 13 insertions, 14 deletions
diff --git a/src/libnet_if_addr.c b/src/libnet_if_addr.c
index 6d8f738..b824a4d 100644
--- a/src/libnet_if_addr.c
+++ b/src/libnet_if_addr.c
@@ -488,22 +488,21 @@ libnet_select_device(libnet_t *l)
}
good:
- for (i = 0; i < c; i++)
- {
- free(al[i].device);
- al[i].device = NULL;
- }
- free(al);
- return (1);
-
+ rc = 1;
+ goto end;
bad:
- for (i = 0; i < c; i++)
- {
- free(al[i].device);
- al[i].device = NULL;
+ rc = -1;
+end:
+ if (al) {
+ for (i = 0; i < c; i++)
+ {
+ free(al[i].device);
+ al[i].device = NULL;
+ }
+ free(al);
}
- free(al);
- return (-1);
+
+ return rc;
}
/**