Mercurial > mplayer.hg
comparison postproc/swscale.c @ 15249:0deaa53ed5ad
check for negative strides before memcpy
author | henry |
---|---|
date | Sun, 24 Apr 2005 07:50:18 +0000 |
parents | 43e55b3d1af0 |
children | 92d2852a0f15 |
comparison
equal
deleted
inserted
replaced
15248:43e55b3d1af0 | 15249:0deaa53ed5ad |
---|---|
1423 | 1423 |
1424 static int PlanarToNV12Wrapper(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, | 1424 static int PlanarToNV12Wrapper(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, |
1425 int srcSliceH, uint8_t* dstParam[], int dstStride[]){ | 1425 int srcSliceH, uint8_t* dstParam[], int dstStride[]){ |
1426 uint8_t *dst=dstParam[0] + dstStride[0]*srcSliceY; | 1426 uint8_t *dst=dstParam[0] + dstStride[0]*srcSliceY; |
1427 /* Copy Y plane */ | 1427 /* Copy Y plane */ |
1428 if(dstStride[0]==srcStride[0]) | 1428 if(dstStride[0]==srcStride[0] && srcStride[0] > 0) |
1429 memcpy(dst, src[0], srcSliceH*dstStride[0]); | 1429 memcpy(dst, src[0], srcSliceH*dstStride[0]); |
1430 else | 1430 else |
1431 { | 1431 { |
1432 int i; | 1432 int i; |
1433 uint8_t *srcPtr= src[0]; | 1433 uint8_t *srcPtr= src[0]; |
1557 static int yvu9toyv12Wrapper(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, | 1557 static int yvu9toyv12Wrapper(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, |
1558 int srcSliceH, uint8_t* dst[], int dstStride[]){ | 1558 int srcSliceH, uint8_t* dst[], int dstStride[]){ |
1559 int i; | 1559 int i; |
1560 | 1560 |
1561 /* copy Y */ | 1561 /* copy Y */ |
1562 if(srcStride[0]==dstStride[0]) | 1562 if(srcStride[0]==dstStride[0] && srcStride[0] > 0) |
1563 memcpy(dst[0]+ srcSliceY*dstStride[0], src[0], srcStride[0]*srcSliceH); | 1563 memcpy(dst[0]+ srcSliceY*dstStride[0], src[0], srcStride[0]*srcSliceH); |
1564 else{ | 1564 else{ |
1565 uint8_t *srcPtr= src[0]; | 1565 uint8_t *srcPtr= src[0]; |
1566 uint8_t *dstPtr= dst[0] + dstStride[0]*srcSliceY; | 1566 uint8_t *dstPtr= dst[0] + dstStride[0]*srcSliceY; |
1567 | 1567 |
1631 static int simpleCopy(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, | 1631 static int simpleCopy(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, |
1632 int srcSliceH, uint8_t* dst[], int dstStride[]){ | 1632 int srcSliceH, uint8_t* dst[], int dstStride[]){ |
1633 | 1633 |
1634 if(isPacked(c->srcFormat)) | 1634 if(isPacked(c->srcFormat)) |
1635 { | 1635 { |
1636 if(dstStride[0]==srcStride[0]) | 1636 if(dstStride[0]==srcStride[0] && srcStride[0] > 0) |
1637 memcpy(dst[0] + dstStride[0]*srcSliceY, src[0], srcSliceH*dstStride[0]); | 1637 memcpy(dst[0] + dstStride[0]*srcSliceY, src[0], srcSliceH*dstStride[0]); |
1638 else | 1638 else |
1639 { | 1639 { |
1640 int i; | 1640 int i; |
1641 uint8_t *srcPtr= src[0]; | 1641 uint8_t *srcPtr= src[0]; |
1669 if(!isGray(c->dstFormat)) | 1669 if(!isGray(c->dstFormat)) |
1670 memset(dst[plane], 128, dstStride[plane]*height); | 1670 memset(dst[plane], 128, dstStride[plane]*height); |
1671 } | 1671 } |
1672 else | 1672 else |
1673 { | 1673 { |
1674 if(dstStride[plane]==srcStride[plane]) | 1674 if(dstStride[plane]==srcStride[plane] && srcStride[plane] > 0) |
1675 memcpy(dst[plane] + dstStride[plane]*y, src[plane], height*dstStride[plane]); | 1675 memcpy(dst[plane] + dstStride[plane]*y, src[plane], height*dstStride[plane]); |
1676 else | 1676 else |
1677 { | 1677 { |
1678 int i; | 1678 int i; |
1679 uint8_t *srcPtr= src[plane]; | 1679 uint8_t *srcPtr= src[plane]; |