Repack tarball to remove problematic license from unused code

* Apply fixes for warnings found by gcc -fanalyzer

Resolves: rhbz#1915836

Signed-off-by: Adrian Reber <areber@redhat.com>
This commit is contained in:
Adrian Reber 2021-04-23 09:02:53 +02:00
parent 219b0b684b
commit 7a384fffb3
4 changed files with 239 additions and 3 deletions

205
120.patch Normal file
View File

@ -0,0 +1,205 @@
From fdf4c18b1f2c17eddc871d4a593240a59dd0682f Mon Sep 17 00:00:00 2001
From: Adrian Reber <areber@redhat.com>
Date: Wed, 14 Apr 2021 09:21:50 +0200
Subject: [PATCH 1/3] libnet_port_list.c: fix gcc -fanalyzer warning
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This fixes:
libnet_port_list.c:99:8: warning: leak of _8 [CWE-401] [-Wanalyzer-malloc-leak]
99 | if (!all_lists)
| ^
libnet_plist_chain_new: events 1-3
|
| 48 | if (l == NULL)
| | ^
| | |
| | (1) following false branch (when l_70(D) is non-NULL)...
|......
| 53 | if (token_list == NULL)
| | ~~ ~
| | | |
| | | (3) following false branch (when token_list_71(D) is non-NULL)...
| | (2) ...to here
|
libnet_plist_chain_new: event 4
|
|cc1:
| (4): ...to here
|
libnet_plist_chain_new: events 5-9
|
| 83 | *plist = malloc(sizeof (libnet_plist_t));
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (5) allocated here
| 84 |
| 85 | if (!(*plist))
| | ~
| | |
| | (6) assuming *plist_74(D) is non-NULL
| | (7) following false branch...
|......
| 93 | tmp = *plist;
| | ~~~
| | |
| | (8) ...to here
|......
| 99 | if (!all_lists)
| | ~
| | |
| | (9) _8 leaks here; was allocated at (5)
|
Signed-off-by: Adrian Reber <areber@redhat.com>
---
src/libnet_port_list.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/libnet_port_list.c b/src/libnet_port_list.c
index 942a856..a99867c 100644
--- a/src/libnet_port_list.c
+++ b/src/libnet_port_list.c
@@ -101,6 +101,7 @@ libnet_plist_chain_new(libnet_t *l, libnet_plist_t **plist, char *token_list)
all_lists = all_lists_tmp;
snprintf(l->err_buf, LIBNET_ERRBUF_SIZE,
"libnet_build_plist_chain: realloc %s", strerror(errno));
+ free(tmp);
*plist = NULL;
return(-1);
}
From 60d71f03f26d349b4bf069983f625128ddcfdba8 Mon Sep 17 00:00:00 2001
From: Adrian Reber <areber@redhat.com>
Date: Wed, 14 Apr 2021 09:41:27 +0200
Subject: [PATCH 2/3] =?UTF-8?q?libnet=5Fpblock.c:=20fix=20warning=20"unuse?=
=?UTF-8?q?d=20variable=20=E2=80=98c=E2=80=99"?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Adrian Reber <areber@redhat.com>
---
src/libnet_pblock.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/libnet_pblock.c b/src/libnet_pblock.c
index fa46d35..e3eb184 100644
--- a/src/libnet_pblock.c
+++ b/src/libnet_pblock.c
@@ -489,7 +489,6 @@ libnet_pblock_coalesce(libnet_t *l, uint8_t **packet, uint32_t *size)
{
if (q->flags & LIBNET_PBLOCK_DO_CHECKSUM)
{
- uint32_t c;
uint8_t* end = *packet + l->aligner + l->total_size;
uint8_t* beg = *packet + n;
int ip_offset = calculate_ip_offset(l, q);
From 5085aebbe93b81eb93bfec5e33c04286f779ceda Mon Sep 17 00:00:00 2001
From: Adrian Reber <areber@redhat.com>
Date: Wed, 14 Apr 2021 10:13:23 +0200
Subject: [PATCH 3/3] libnet_cq.c: fix 'dereference of possibly-NULL'
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
libnet_cq.c:139:18: warning: dereference of possibly-NULL new_18 [CWE-690] [-Wanalyzer-possible-null-dereference]
139 | new->context = l;
| ~~~~~~~~~~~~~^~~
libnet_cq_add.part.0: events 1-6
|
| 71 | libnet_cq_add(libnet_t *l, char *label)
| | ^~~~~~~~~~~~~
| | |
| | (1) entry to libnet_cq_add.part.0
|......
| 89 | if (label == NULL)
| | ~
| | |
| | (2) following false branch (when label_1(D) is non-NULL)...
|......
| 97 | if (l_cq == NULL)
| | ~~ ~
| | | |
| | | (4) following false branch...
| | (3) ...to here
|......
| 124 | if (libnet_cq_dup_check(l, label))
| | ~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | | |
| | | (6) calling libnet_cq_dup_check from libnet_cq_add.part.0
| | (5) ...to here
|
+--> libnet_cq_dup_check: events 7-13
|
| 269 | libnet_cq_dup_check(libnet_t *l, char *label)
| | ^~~~~~~~~~~~~~~~~~~
| | |
| | (7) entry to libnet_cq_dup_check
|......
| 273 | for (p = l_cq; p; p = p->next)
| | ~ ~~~~~~~~~~~
| | | |
| | | (13) ...to here
| | (8) following true branch (when p_6 is non-NULL)...
| 274 | {
| 275 | if (p->context == l)
| | ~~ ~
| | | |
| | | (10) following false branch...
| | (9) ...to here
|......
| 281 | if (strncmp(p->context->label, label, LIBNET_LABEL_SIZE) == 0)
| | ~~ ~
| | | |
| | | (12) following false branch...
| | (11) ...to here
|
<------+
|
libnet_cq_add.part.0: events 14-20
|
| 124 | if (libnet_cq_dup_check(l, label))
| | ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | ||
| | |(14) returning to libnet_cq_add.part.0 from libnet_cq_dup_check
| | (15) following false branch...
|......
| 130 | new = (libnet_cq_t *)malloc(sizeof (libnet_cq_t));
| | ~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | | |
| | | (17) this call could return NULL
| | (16) ...to here
| 131 | if (l_cq == NULL)
| | ~
| | |
| | (18) following false branch...
|......
| 139 | new->context = l;
| | ~~~~~~~~~~~~~~~~
| | | |
| | | (20) new_18 could be NULL: unchecked value from (17)
| | (19) ...to here
|
Signed-off-by: Adrian Reber <areber@redhat.com>
---
src/libnet_cq.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/libnet_cq.c b/src/libnet_cq.c
index 2234cbc..b3c5677 100644
--- a/src/libnet_cq.c
+++ b/src/libnet_cq.c
@@ -128,7 +128,7 @@ libnet_cq_add(libnet_t *l, char *label)
}
new = (libnet_cq_t *)malloc(sizeof (libnet_cq_t));
- if (l_cq == NULL)
+ if (new == NULL)
{
snprintf(l->err_buf, LIBNET_ERRBUF_SIZE,
"%s(): can't malloc new context queue: %s",

View File

@ -1,11 +1,18 @@
Summary: C library for portable packet creation and injection
Name: libnet
Version: 1.2
Release: 4%{?dist}
Release: 5%{?dist}
License: BSD
URL: https://github.com/libnet/libnet
Source0: https://github.com/libnet/libnet/releases/download/v%{version}/%{name}-%{version}.tar.gz
# This used to be https://github.com/libnet/libnet/releases/download/v%%{version}/%%{name}-%%{version}.tar.gz
# But because of licensing a repacked tarball is used
# The repacked tarball has the directory win32/wpdpack removed
# which was never used. Upstream also removed that directory:
# https://github.com/libnet/libnet/commit/eba016f9506d9041e1bc8786c10ca94ebe626057
Source0: libnet-1.2-repack.tar.gz
Patch0: libnet-config.patch
Patch1: libnet_pblock.patch
Patch2: https://patch-diff.githubusercontent.com/raw/libnet/libnet/pull/120.patch
BuildRequires: gcc
BuildRequires: make
BuildRequires: %{_bindir}/pod2man
@ -46,6 +53,8 @@ developing applications that use libnet.
%prep
%setup -q
%patch0 -p1
%patch1 -p1
%patch2 -p1
# Avoid library soname bump (https://github.com/libnet/libnet/issues/115)
sed -e 's/-version-info 9:0:0/-version-info 9:0:8/' -i src/Makefile.{am,in}
@ -95,6 +104,10 @@ done
%endif
%changelog
* Fri Apr 23 2021 Adrian Reber <areber@redhat.com> - 1.2-5
- Repack tarball to remove problematic license from unused code
- Apply fixes for warnings found by gcc -fanalyzer
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 1.2-4
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937

18
libnet_pblock.patch Normal file
View File

@ -0,0 +1,18 @@
diff --git a/src/libnet_pblock.c b/src/libnet_pblock.c
index 9fd015f..fa46d35 100644
--- a/src/libnet_pblock.c
+++ b/src/libnet_pblock.c
@@ -500,10 +500,9 @@ libnet_pblock_coalesce(libnet_t *l, uint8_t **packet, uint32_t *size)
q->ptag, libnet_diag_dump_pblock_type(q->type),
ip_offset);
#endif
- c = libnet_inet_checksum(l, iph,
- libnet_pblock_p2p(q->type), q->h_len,
- beg, end);
- if (c == -1)
+ if (libnet_inet_checksum(l, iph,
+ libnet_pblock_p2p(q->type), q->h_len,
+ beg, end) == -1)
{
/* err msg set in libnet_do_checksum() */
goto err;

View File

@ -1 +1 @@
SHA512 (libnet-1.2.tar.gz) = 84430f24e000eb7728b1fbb5e620716d13d193e8b9e024cf56a08fbeeeaaf56c9122caaf7647f01e6b38b73212e592fa5cc4e8ff56b1d5f5a73aea462e84edd6
SHA512 (libnet-1.2-repack.tar.gz) = a65a19516bfc2088d21d54479c8f4a1ff7ef5f2e554cb071403f8d7e5283fdfe2572c6dcaf149764f668a11a479f70e4e5a0aef9cf33aadac2f7e6dd4f480d99