rte_pcapng_close() might dereference a null pointer; as example, PVS-Studio gives its usage in test_pcapng.c: indeed, that call to rte_pcapng_close() might receive a null pointer.
In that case, rte_errno is set to EINVAL. The API is updated accordingly. Link: https://pvs-studio.com/en/docs/warnings/v522/ Link: https://github.com/DPDK/dpdk/blob/e5176f23ae8b31437c3e5eb875c81f95bf3a9942/app/test/test_pcapng.c#L438 Fixes: 8d23ce8f5ee9 ("pcapng: add new library for writing pcapng files") Signed-off-by: Ariel Otilibili <ariel.otilib...@6wind.com> --- .mailmap | 2 +- lib/pcapng/rte_pcapng.c | 3 +++ lib/pcapng/rte_pcapng.h | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.mailmap b/.mailmap index a03d3cfb591b..ea68d6180ccc 100644 --- a/.mailmap +++ b/.mailmap @@ -135,7 +135,7 @@ Anupam Kapoor <anupam.kap...@gmail.com> Apeksha Gupta <apeksha.gu...@nxp.com> Archana Muniganti <march...@marvell.com> <muniganti.arch...@caviumnetworks.com> Archit Pandey <architpandeyn...@gmail.com> -Ariel Otilibili <otili...@eurecom.fr> <ariel.otilib...@6wind.com> +Ariel Otilibili <ariel.otilib...@6wind.com> <otili...@eurecom.fr> Arkadiusz Kubalewski <arkadiusz.kubalew...@intel.com> Arkadiusz Kusztal <arkadiuszx.kusz...@intel.com> Arnaud Fiorini <arnaud.fior...@polymtl.ca> diff --git a/lib/pcapng/rte_pcapng.c b/lib/pcapng/rte_pcapng.c index 16485b27cb46..d2cbcea42885 100644 --- a/lib/pcapng/rte_pcapng.c +++ b/lib/pcapng/rte_pcapng.c @@ -716,6 +716,9 @@ rte_pcapng_fdopen(int fd, void rte_pcapng_close(rte_pcapng_t *self) { + if (!self) + rte_errno = EINVAL; + close(self->outfd); free(self); } diff --git a/lib/pcapng/rte_pcapng.h b/lib/pcapng/rte_pcapng.h index 48f2b5756430..f7b976987320 100644 --- a/lib/pcapng/rte_pcapng.h +++ b/lib/pcapng/rte_pcapng.h @@ -60,6 +60,8 @@ rte_pcapng_fdopen(int fd, * * @param self * handle to library + + * If self is NULL, rte_errno is set to EINVAL. */ void rte_pcapng_close(rte_pcapng_t *self); -- 2.30.2