Reject inputs once parameter_size reaches the array limit, and pass
ARRAY_SIZE(parameter) into parse_input_od_command_lines() for defense in
depth.
Signed-off-by: Candice Li <candice.li@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
while ((sub_str = strsep(&tmp_str, delimiter)) != NULL) {
if (strlen(sub_str) == 0)
continue;
+ if (parameter_size >= ARRAY_SIZE(parameter))
+ return -EINVAL;
ret = kstrtol(sub_str, 0, ¶meter[parameter_size]);
if (ret)
return -EINVAL;
size_t count,
u32 *type,
long *params,
+ size_t params_max,
uint32_t *num_of_params)
{
const char delimiter[3] = {' ', '\n', '\0'};
if (strlen(sub_str) == 0)
continue;
+ if (parameter_size >= params_max)
+ return -EINVAL;
+
ret = kstrtol(sub_str, 0, ¶ms[parameter_size]);
if (ret)
return -EINVAL;
count,
&cmd_type,
parameter,
+ ARRAY_SIZE(parameter),
¶meter_size);
if (ret)
return ret;