You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	lavu/imgutils: add consistency checks to av_image_copy_plane()
Add assertions and abort in case of invalid |dst_linesize| < bytewidth or |src_linesize| < bytewidth. Avoid to silently corrupt memory.
This commit is contained in:
		| @@ -21,6 +21,7 @@ | ||||
|  * misc image utilities | ||||
|  */ | ||||
|  | ||||
| #include "avassert.h" | ||||
| #include "common.h" | ||||
| #include "imgutils.h" | ||||
| #include "internal.h" | ||||
| @@ -244,6 +245,8 @@ void av_image_copy_plane(uint8_t       *dst, int dst_linesize, | ||||
| { | ||||
|     if (!dst || !src) | ||||
|         return; | ||||
|     av_assert0(abs(src_linesize) >= bytewidth); | ||||
|     av_assert0(abs(dst_linesize) >= bytewidth); | ||||
|     for (;height > 0; height--) { | ||||
|         memcpy(dst, src, bytewidth); | ||||
|         dst += dst_linesize; | ||||
|   | ||||
| @@ -99,6 +99,9 @@ int av_image_alloc(uint8_t *pointers[4], int linesizes[4], | ||||
|  * The first byte of each successive line is separated by *_linesize | ||||
|  * bytes. | ||||
|  * | ||||
|  * bytewidth must be contained by both absolute values of dst_linesize | ||||
|  * and src_linesize, otherwise the function behavior is undefined. | ||||
|  * | ||||
|  * @param dst_linesize linesize for the image plane in dst | ||||
|  * @param src_linesize linesize for the image plane in src | ||||
|  */ | ||||
|   | ||||
| @@ -76,7 +76,7 @@ | ||||
|  | ||||
| #define LIBAVUTIL_VERSION_MAJOR  52 | ||||
| #define LIBAVUTIL_VERSION_MINOR   9 | ||||
| #define LIBAVUTIL_VERSION_MICRO 100 | ||||
| #define LIBAVUTIL_VERSION_MICRO 101 | ||||
|  | ||||
| #define LIBAVUTIL_VERSION_INT   AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ | ||||
|                                                LIBAVUTIL_VERSION_MINOR, \ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user