Verify first 4 bytes of TIFF file

Avoids Olympus Raw (ORF) false positive
This commit is contained in:
Lovell Fuller 2014-10-13 11:40:28 +01:00
parent 9069b2f9ad
commit 7d94e81b7b
1 changed files with 6 additions and 6 deletions

View File

@ -1904,9 +1904,9 @@ vips__istiff_buffer( void *buf, size_t len )
{ {
char *str = (char *) buf; char *str = (char *) buf;
if( len >= 2 && if( len >= 4 &&
((str[0] == 'M' && str[1] == 'M') || ((str[0] == 'M' && str[1] == 'M' && str[2] == '\0' && str[3] == '*') ||
(str[0] == 'I' && str[1] == 'I')) ) (str[0] == 'I' && str[1] == 'I' && str[2] == '*' && str[3] == '\0')) )
return( TRUE ); return( TRUE );
return( FALSE ); return( FALSE );
@ -1915,10 +1915,10 @@ vips__istiff_buffer( void *buf, size_t len )
gboolean gboolean
vips__istiff( const char *filename ) vips__istiff( const char *filename )
{ {
unsigned char buf[2]; unsigned char buf[4];
if( vips__get_bytes( filename, buf, 2 ) && if( vips__get_bytes( filename, buf, 4 ) &&
vips__istiff_buffer( buf, 2 ) ) vips__istiff_buffer( buf, 4 ) )
return( TRUE ); return( TRUE );
return( FALSE ); return( FALSE );