forked from old/legacy-imlib2
TIFF loader: Slightly more strict signature check
Avoid starting libtiff on various raw image types.
This commit is contained in:
parent
59ab21a580
commit
70bd7e3488
|
@ -332,12 +332,25 @@ put_separate_and_raster(TIFFRGBAImage * img, uint32_t * rast,
|
||||||
raster((TIFFRGBAImage_Extra *) img, rast, x, y, w, h);
|
raster((TIFFRGBAImage_Extra *) img, rast, x, y, w, h);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
_sig_check(const uint8_t * data, unsigned int size)
|
||||||
|
{
|
||||||
|
if (size < 8)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
if (data[0] == 'I' && data[1] == 'I')
|
||||||
|
return !(data[2] == 42 && data[3] == 0);
|
||||||
|
if (data[0] == 'M' && data[1] == 'M')
|
||||||
|
return !(data[2] == 0 && data[3] == 42);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
_load(ImlibImage * im, int load_data)
|
_load(ImlibImage * im, int load_data)
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
TIFF *tif = NULL;
|
TIFF *tif = NULL;
|
||||||
uint16_t magic_number;
|
|
||||||
TIFFRGBAImage_Extra rgba_image;
|
TIFFRGBAImage_Extra rgba_image;
|
||||||
uint32_t *rast = NULL;
|
uint32_t *rast = NULL;
|
||||||
char txt[1024];
|
char txt[1024];
|
||||||
|
@ -345,16 +358,9 @@ _load(ImlibImage * im, int load_data)
|
||||||
rc = LOAD_FAIL;
|
rc = LOAD_FAIL;
|
||||||
rgba_image.image = NULL;
|
rgba_image.image = NULL;
|
||||||
|
|
||||||
/* Do initial signature check */
|
/* Signature check */
|
||||||
#define TIFF_BYTES_TO_CHECK sizeof(magic_number)
|
if (_sig_check(im->fi->fdata, im->fi->fsize))
|
||||||
|
goto quit;
|
||||||
if (im->fi->fsize < (int)TIFF_BYTES_TO_CHECK)
|
|
||||||
return rc;
|
|
||||||
|
|
||||||
magic_number = *(const uint16_t *)im->fi->fdata;
|
|
||||||
|
|
||||||
if (magic_number != TIFF_BIGENDIAN && magic_number != TIFF_LITTLEENDIAN)
|
|
||||||
return rc;
|
|
||||||
|
|
||||||
mm_init(im->fi->fdata, im->fi->fsize);
|
mm_init(im->fi->fdata, im->fi->fsize);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue