On 3/19/2019 7:12 PM, Akhil Goyal wrote: > > On 3/11/2019 11:25 AM, Anoob Joseph wrote: >> The string compare to the length of driver name might give false >> positives when there are drivers with similar names (one being the >> subset of another). >> >> Following is such a naming which could result in false positive. >> 1. crypto_driver >> 2. crypto_driver1 >> >> When strncmp with len = strlen("crypto_driver") is done, it could give >> a false positive when compared against "crypto_driver1". For such cases, >> 'strlen + 1' is done, so that the NULL termination also would be >> considered for the comparison. >> >> Fixes: d11b0f30df88 ("cryptodev: introduce API and framework for crypto >> devices") >> >> Signed-off-by: Ankur Dwivedi <adwiv...@marvell.com> >> Signed-off-by: Anoob Joseph <ano...@marvell.com> >> --- >> v2: >> * Using strlen + 1, instead of RTE_CRYPTODEV_NAME_MAX_LEN for the comparison. >> * Strcmp would not cause this issue. Touching only the places which >> would result in the issue. >> >> lib/librte_cryptodev/rte_cryptodev.c | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/lib/librte_cryptodev/rte_cryptodev.c >> b/lib/librte_cryptodev/rte_cryptodev.c >> index 7009735..871d7dd 100644 >> --- a/lib/librte_cryptodev/rte_cryptodev.c >> +++ b/lib/librte_cryptodev/rte_cryptodev.c >> @@ -586,7 +586,7 @@ rte_cryptodev_devices_get(const char *driver_name, >> uint8_t *devices, >> >> cmp = strncmp(devs[i].device->driver->name, >> driver_name, >> - strlen(driver_name)); >> + strlen(driver_name) + 1); >> >> if (cmp == 0) >> devices[count++] = devs[i].data->dev_id; >> @@ -1691,7 +1691,7 @@ rte_cryptodev_driver_id_get(const char *name) >> >> TAILQ_FOREACH(driver, &cryptodev_driver_list, next) { >> driver_name = driver->driver->name; >> - if (strncmp(driver_name, name, strlen(driver_name)) == 0) >> + if (strncmp(driver_name, name, strlen(driver_name) + 1) == 0) >> return driver->id; >> } >> return -1; > Acked-by: Akhil Goyal <akhil.go...@nxp.com> Applied to dpdk-next-crypto
Thanks.