mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
crypto: qat - use simple_strtoull to improve qat_uclo_parse_num
Replace the manual string copying and parsing logic with a call to simple_strtoull() to simplify and improve qat_uclo_parse_num(). Ensure that the parsed number does not exceed UINT_MAX, and add an approximate upper-bound check (no more than 19 digits) to guard against overflow. Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev> Acked-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
committed by
Herbert Xu
parent
d912494747
commit
d5b59ec33c
@@ -200,20 +200,12 @@ qat_uclo_cleanup_batch_init_list(struct icp_qat_fw_loader_handle *handle,
|
||||
|
||||
static int qat_uclo_parse_num(char *str, unsigned int *num)
|
||||
{
|
||||
char buf[16] = {0};
|
||||
unsigned long ae = 0;
|
||||
int i;
|
||||
|
||||
strscpy(buf, str, sizeof(buf));
|
||||
for (i = 0; i < 16; i++) {
|
||||
if (!isdigit(buf[i])) {
|
||||
buf[i] = '\0';
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ((kstrtoul(buf, 10, &ae)))
|
||||
return -EFAULT;
|
||||
unsigned long long ae;
|
||||
char *end;
|
||||
|
||||
ae = simple_strtoull(str, &end, 10);
|
||||
if (ae > UINT_MAX || str == end || (end - str) > 19)
|
||||
return -EINVAL;
|
||||
*num = (unsigned int)ae;
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user