mirror of
				https://github.com/nyanmisaka/ffmpeg-rockchip.git
				synced 2025-10-31 12:36:41 +08:00 
			
		
		
		
	swscale: Fix several (real world) integer overflows.
Fixes Ticket795 Bug Found by: Oana Stratulat Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
		| @@ -220,7 +220,7 @@ static int initFilter(int16_t **outFilter, int16_t **filterPos, int *outFilterSi | ||||
|  | ||||
|     } else if (flags&SWS_POINT) { // lame looking point sampling mode | ||||
|         int i; | ||||
|         int xDstInSrc; | ||||
|         int64_t xDstInSrc; | ||||
|         filterSize= 1; | ||||
|         FF_ALLOC_OR_GOTO(NULL, filter, dstW*sizeof(*filter)*filterSize, fail); | ||||
|  | ||||
| @@ -234,7 +234,7 @@ static int initFilter(int16_t **outFilter, int16_t **filterPos, int *outFilterSi | ||||
|         } | ||||
|     } else if ((xInc <= (1<<16) && (flags&SWS_AREA)) || (flags&SWS_FAST_BILINEAR)) { // bilinear upscale | ||||
|         int i; | ||||
|         int xDstInSrc; | ||||
|         int64_t xDstInSrc; | ||||
|         filterSize= 2; | ||||
|         FF_ALLOC_OR_GOTO(NULL, filter, dstW*sizeof(*filter)*filterSize, fail); | ||||
|  | ||||
| @@ -246,7 +246,7 @@ static int initFilter(int16_t **outFilter, int16_t **filterPos, int *outFilterSi | ||||
|             (*filterPos)[i]= xx; | ||||
|             //bilinear upscale / linear interpolate / area averaging | ||||
|             for (j=0; j<filterSize; j++) { | ||||
|                 int64_t coeff= fone - FFABS((xx<<16) - xDstInSrc)*(fone>>16); | ||||
|                 int64_t coeff= fone - FFABS(((int64_t)xx<<16) - xDstInSrc)*(fone>>16); | ||||
|                 if (coeff<0) coeff=0; | ||||
|                 filter[i*filterSize + j]= coeff; | ||||
|                 xx++; | ||||
| @@ -254,7 +254,7 @@ static int initFilter(int16_t **outFilter, int16_t **filterPos, int *outFilterSi | ||||
|             xDstInSrc+= xInc; | ||||
|         } | ||||
|     } else { | ||||
|         int xDstInSrc; | ||||
|         int64_t xDstInSrc; | ||||
|         int sizeFactor; | ||||
|  | ||||
|         if      (flags&SWS_BICUBIC)      sizeFactor=  4; | ||||
| @@ -283,7 +283,7 @@ static int initFilter(int16_t **outFilter, int16_t **filterPos, int *outFilterSi | ||||
|             int j; | ||||
|             (*filterPos)[i]= xx; | ||||
|             for (j=0; j<filterSize; j++) { | ||||
|                 int64_t d= ((int64_t)FFABS((xx<<17) - xDstInSrc))<<13; | ||||
|                 int64_t d= (FFABS(((int64_t)xx<<17) - xDstInSrc))<<13; | ||||
|                 double floatd; | ||||
|                 int64_t coeff; | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Michael Niedermayer
					Michael Niedermayer