[dpdk-dev] eal: reset driver name pointer on failure
Checks
Commit Message
The pointer set by strdup() needs to be cleared on failure to avoid a
potential double-free from the caller.
Found with clang static analysis:
lib/librte_eal/common/eal_common_devargs.c:123:2:
warning: Attempt to free released memory
free(buf);
^~~~~~~~~
Fixes: 3fe2e5fec82b ("eal: fix argument parsing check")
Signed-off-by: Emmanuel Roullit <emmanuel.roullit@gmail.com>
---
lib/librte_eal/common/eal_common_devargs.c | 1 +
1 file changed, 1 insertion(+)
Comments
2017-01-24 21:26, Emmanuel Roullit:
> The pointer set by strdup() needs to be cleared on failure to avoid a
> potential double-free from the caller.
>
> Found with clang static analysis:
> lib/librte_eal/common/eal_common_devargs.c:123:2:
> warning: Attempt to free released memory
> free(buf);
> ^~~~~~~~~
>
> Fixes: 3fe2e5fec82b ("eal: fix argument parsing check")
The real bug origin is:
Fixes: 0fe11ec592b2 ("eal: add vdev init and uninit")
> Signed-off-by: Emmanuel Roullit <emmanuel.roullit@gmail.com>
Applied, thanks
@@ -72,6 +72,7 @@ rte_eal_parse_devargs_str(const char *devargs_str,
if (*drvargs == NULL) {
free(*drvname);
+ *drvname = NULL;
return -1;
}
return 0;