mirror of
https://github.com/torvalds/linux.git
synced 2026-05-24 07:03:03 +02:00
wifi: hostap: Add __counted_by for struct prism2_download_data and use struct_size()
Prepare for the coming implementation by GCC and Clang of the __counted_by attribute. Flexible array members annotated with __counted_by can have their accesses bounds-checked at run-time via CONFIG_UBSAN_BOUNDS (for array indexing) and CONFIG_FORTIFY_SOURCE (for strcpy/memcpy-family functions). While there, use struct_size() helper, instead of the open-coded version, to calculate the size for the allocation of the whole flexible structure, including of course, the flexible-array member. This code was found with the help of Coccinelle, and audited and fixed manually. Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org> Reviewed-by: Kees Cook <keescook@chromium.org> Signed-off-by: Kalle Valo <kvalo@kernel.org> Link: https://lore.kernel.org/r/ZSRXXvWMMkm7qqRW@work
This commit is contained in:
parent
de8dd09694
commit
5cf47dc141
|
|
@ -732,8 +732,7 @@ static int prism2_download(local_info_t *local,
|
|||
goto out;
|
||||
}
|
||||
|
||||
dl = kzalloc(sizeof(*dl) + param->num_areas *
|
||||
sizeof(struct prism2_download_data_area), GFP_KERNEL);
|
||||
dl = kzalloc(struct_size(dl, data, param->num_areas), GFP_KERNEL);
|
||||
if (dl == NULL) {
|
||||
ret = -ENOMEM;
|
||||
goto out;
|
||||
|
|
|
|||
|
|
@ -617,7 +617,7 @@ struct prism2_download_data {
|
|||
u32 addr; /* wlan card address */
|
||||
u32 len;
|
||||
u8 *data; /* allocated data */
|
||||
} data[];
|
||||
} data[] __counted_by(num_areas);
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user