riff, aiff: fixed "limited range" gcc warning

On 32 bit systems with large file support enabled (i.e. "sizeof(off_t)
> sizeof(size_t)") gcc emits a warning because a size_t cast to off_t
can never become negative.
This commit is contained in:
Max Kellermann 2009-10-11 23:15:38 +02:00
parent a1d868eb56
commit 9a3f5ff977
3 changed files with 12 additions and 10 deletions

2
NEWS
View File

@ -1,6 +1,8 @@
ver 0.15.5 (2009/??/??)
* input:
- curl: don't abort if a packet has only metadata
* tags:
- riff, aiff: fixed "limited range" gcc warning
* decoder_thread: change the fallback decoder name to "mad"

View File

@ -84,6 +84,11 @@ aiff_seek_id3(FILE *file)
return 0;
size = GUINT32_FROM_BE(chunk.size);
if (size > G_MAXINT32)
/* too dangerous, bail out: possible integer
underflow when casting to off_t */
return 0;
if (size % 2 != 0)
/* pad byte */
++size;
@ -92,11 +97,6 @@ aiff_seek_id3(FILE *file)
/* found it! */
return size;
if ((off_t)size < 0)
/* integer underflow after cast to signed
type */
return 0;
ret = fseek(file, size, SEEK_CUR);
if (ret != 0)
return 0;

View File

@ -83,6 +83,11 @@ riff_seek_id3(FILE *file)
return 0;
size = GUINT32_FROM_LE(chunk.size);
if (size > G_MAXINT32)
/* too dangerous, bail out: possible integer
underflow when casting to off_t */
return 0;
if (size % 2 != 0)
/* pad byte */
++size;
@ -91,11 +96,6 @@ riff_seek_id3(FILE *file)
/* found it! */
return size;
if ((off_t)size < 0)
/* integer underflow after cast to signed
type */
return 0;
ret = fseek(file, size, SEEK_CUR);
if (ret != 0)
return 0;