Commit d1916d13 authored by Michael Niedermayer's avatar Michael Niedermayer Committed by Vittorio Giovara

dsputil/pngdsp: fix signed/unsigned type in end comparison

Fixes out of array accesses and integer overflows.
parent 0673ede9
...@@ -1742,7 +1742,7 @@ void ff_set_cmp(DSPContext* c, me_cmp_func *cmp, int type){ ...@@ -1742,7 +1742,7 @@ void ff_set_cmp(DSPContext* c, me_cmp_func *cmp, int type){
static void add_bytes_c(uint8_t *dst, uint8_t *src, int w){ static void add_bytes_c(uint8_t *dst, uint8_t *src, int w){
long i; long i;
for(i=0; i<=w-sizeof(long); i+=sizeof(long)){ for (i = 0; i <= w - (int) sizeof(long); i += sizeof(long)) {
long a = *(long*)(src+i); long a = *(long*)(src+i);
long b = *(long*)(dst+i); long b = *(long*)(dst+i);
*(long*)(dst+i) = ((a&pb_7f) + (b&pb_7f)) ^ ((a^b)&pb_80); *(long*)(dst+i) = ((a&pb_7f) + (b&pb_7f)) ^ ((a^b)&pb_80);
...@@ -1767,7 +1767,7 @@ static void diff_bytes_c(uint8_t *dst, uint8_t *src1, uint8_t *src2, int w){ ...@@ -1767,7 +1767,7 @@ static void diff_bytes_c(uint8_t *dst, uint8_t *src1, uint8_t *src2, int w){
} }
}else }else
#endif #endif
for(i=0; i<=w-sizeof(long); i+=sizeof(long)){ for (i = 0; i <= w - (int) sizeof(long); i += sizeof(long)) {
long a = *(long*)(src1+i); long a = *(long*)(src1+i);
long b = *(long*)(src2+i); long b = *(long*)(src2+i);
*(long*)(dst+i) = ((a|pb_80) - (b&pb_7f)) ^ ((a^b^pb_80)&pb_80); *(long*)(dst+i) = ((a|pb_80) - (b&pb_7f)) ^ ((a^b^pb_80)&pb_80);
......
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
static void add_bytes_l2_c(uint8_t *dst, uint8_t *src1, uint8_t *src2, int w) static void add_bytes_l2_c(uint8_t *dst, uint8_t *src1, uint8_t *src2, int w)
{ {
long i; long i;
for (i = 0; i <= w - sizeof(long); i += sizeof(long)) { for (i = 0; i <= w - (int)sizeof(long); i += sizeof(long)) {
long a = *(long *)(src1 + i); long a = *(long *)(src1 + i);
long b = *(long *)(src2 + i); long b = *(long *)(src2 + i);
*(long *)(dst + i) = ((a & pb_7f) + (b & pb_7f)) ^ ((a ^ b) & pb_80); *(long *)(dst + i) = ((a & pb_7f) + (b & pb_7f)) ^ ((a ^ b) & pb_80);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment