mirror of
https://chromium.googlesource.com/libyuv/libyuv
synced 2025-12-06 16:56:55 +08:00
Validate memory right after malloc
The failure of malloc would make a NULL pointer. But if in this case, things like reinterpret_cast is done to some shift from the NULL point, it will return a valid pointer although its content would be Access Violation area. Bug: 359949838 Change-Id: Ie73bca426671ee85315b96f187a6de8c955cada6 Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/5789885 Reviewed-by: Frank Barchard <fbarchard@chromium.org>
This commit is contained in:
parent
e434b8c5ae
commit
874f391dbf
@ -70,9 +70,11 @@ static inline bool SizeValid(int src_width,
|
|||||||
}
|
}
|
||||||
|
|
||||||
#define align_buffer_page_end(var, size) \
|
#define align_buffer_page_end(var, size) \
|
||||||
|
uint8_t* var = NULL; \
|
||||||
uint8_t* var##_mem = \
|
uint8_t* var##_mem = \
|
||||||
reinterpret_cast<uint8_t*>(malloc(((size) + 4095 + 63) & ~4095)); \
|
reinterpret_cast<uint8_t*>(malloc(((size) + 4095 + 63) & ~4095)); \
|
||||||
uint8_t* var = reinterpret_cast<uint8_t*>( \
|
if (var##_mem) \
|
||||||
|
var = reinterpret_cast<uint8_t*>( \
|
||||||
(intptr_t)(var##_mem + (((size) + 4095 + 63) & ~4095) - (size)) & ~63)
|
(intptr_t)(var##_mem + (((size) + 4095 + 63) & ~4095) - (size)) & ~63)
|
||||||
|
|
||||||
#define free_aligned_buffer_page_end(var) \
|
#define free_aligned_buffer_page_end(var) \
|
||||||
@ -80,9 +82,11 @@ static inline bool SizeValid(int src_width,
|
|||||||
var = NULL
|
var = NULL
|
||||||
|
|
||||||
#define align_buffer_page_end_16(var, size) \
|
#define align_buffer_page_end_16(var, size) \
|
||||||
|
uint16_t* var = NULL; \
|
||||||
uint8_t* var##_mem = \
|
uint8_t* var##_mem = \
|
||||||
reinterpret_cast<uint8_t*>(malloc(((size)*2 + 4095 + 63) & ~4095)); \
|
reinterpret_cast<uint8_t*>(malloc(((size)*2 + 4095 + 63) & ~4095)); \
|
||||||
uint16_t* var = reinterpret_cast<uint16_t*>( \
|
if (var##_mem) \
|
||||||
|
var = reinterpret_cast<uint16_t*>( \
|
||||||
(intptr_t)(var##_mem + (((size)*2 + 4095 + 63) & ~4095) - (size)*2) & \
|
(intptr_t)(var##_mem + (((size)*2 + 4095 + 63) & ~4095) - (size)*2) & \
|
||||||
~63)
|
~63)
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user