WebPPictureImport*: check src pointer

fixes crash with NULL source pointer in calls to simple encode api
(WebPEncodeRGB, etc.)

Change-Id: I706d670c80298da5176aaa5ba0eb2238dd71a8f0
This commit is contained in:
James Zern 2016-03-24 22:52:01 -07:00
parent 64eed38779
commit 41f14bcbc5

View File

@ -1125,32 +1125,44 @@ static int Import(WebPPicture* const picture,
int WebPPictureImportRGB(WebPPicture* picture, int WebPPictureImportRGB(WebPPicture* picture,
const uint8_t* rgb, int rgb_stride) { const uint8_t* rgb, int rgb_stride) {
return (picture != NULL) ? Import(picture, rgb, rgb_stride, 3, 0, 0) : 0; return (picture != NULL && rgb != NULL)
? Import(picture, rgb, rgb_stride, 3, 0, 0)
: 0;
} }
int WebPPictureImportBGR(WebPPicture* picture, int WebPPictureImportBGR(WebPPicture* picture,
const uint8_t* rgb, int rgb_stride) { const uint8_t* rgb, int rgb_stride) {
return (picture != NULL) ? Import(picture, rgb, rgb_stride, 3, 1, 0) : 0; return (picture != NULL && rgb != NULL)
? Import(picture, rgb, rgb_stride, 3, 1, 0)
: 0;
} }
int WebPPictureImportRGBA(WebPPicture* picture, int WebPPictureImportRGBA(WebPPicture* picture,
const uint8_t* rgba, int rgba_stride) { const uint8_t* rgba, int rgba_stride) {
return (picture != NULL) ? Import(picture, rgba, rgba_stride, 4, 0, 1) : 0; return (picture != NULL && rgba != NULL)
? Import(picture, rgba, rgba_stride, 4, 0, 1)
: 0;
} }
int WebPPictureImportBGRA(WebPPicture* picture, int WebPPictureImportBGRA(WebPPicture* picture,
const uint8_t* rgba, int rgba_stride) { const uint8_t* rgba, int rgba_stride) {
return (picture != NULL) ? Import(picture, rgba, rgba_stride, 4, 1, 1) : 0; return (picture != NULL && rgba != NULL)
? Import(picture, rgba, rgba_stride, 4, 1, 1)
: 0;
} }
int WebPPictureImportRGBX(WebPPicture* picture, int WebPPictureImportRGBX(WebPPicture* picture,
const uint8_t* rgba, int rgba_stride) { const uint8_t* rgba, int rgba_stride) {
return (picture != NULL) ? Import(picture, rgba, rgba_stride, 4, 0, 0) : 0; return (picture != NULL && rgba != NULL)
? Import(picture, rgba, rgba_stride, 4, 0, 0)
: 0;
} }
int WebPPictureImportBGRX(WebPPicture* picture, int WebPPictureImportBGRX(WebPPicture* picture,
const uint8_t* rgba, int rgba_stride) { const uint8_t* rgba, int rgba_stride) {
return (picture != NULL) ? Import(picture, rgba, rgba_stride, 4, 1, 0) : 0; return (picture != NULL && rgba != NULL)
? Import(picture, rgba, rgba_stride, 4, 1, 0)
: 0;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------