diff options
author | Joachim Wiberg <troglobit@gmail.com> | 2022-12-28 13:53:10 +0100 |
---|---|---|
committer | Joachim Wiberg <troglobit@gmail.com> | 2022-12-28 14:11:08 +0100 |
commit | 400084133c5535d67a1f3a6a7b044482f8009bc5 (patch) | |
tree | b24456e957853d85ff614a3e603edc037e7ff1ea | |
parent | ba040b6b9484664716902c8b18cdbce09615659a (diff) | |
download | libnet-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.c | 27 |
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; } /** |