Fix CVE-2018-13406: uvesafb_setcmap() integer overflow in allocation (use kmalloc_array) #112
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Background
In drivers/video/fbdev/uvesafb.c, uvesafb_setcmap() could allocate entries with
kmalloc(sizeof(*entries) * cmap->len)wherecmap->lenmay become large enough to overflow the multiplication, leading to an undersized allocation and potential kernel crash or privilege impact; this is tracked as CVE-2018-13406.Changes
Replace the overflow-prone allocation with
kmalloc_array(cmap->len, sizeof(*entries), GFP_KERNEL)so the size calculation is checked and allocation fails safely on overflow.Security Impact
Prevents integer-overflow-driven undersized allocation in the generic VESA framebuffer driver colormap path, addressing CVE-2018-13406.
References
Upstream commit: 9f645bcc566a1e9f921bdae7528a01ced5bc3713; CVE: CVE-2018-13406