aboutsummaryrefslogtreecommitdiff
path: root/src/riff.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/riff.c')
-rw-r--r--src/riff.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/riff.c b/src/riff.c
index 7227fd3c..a8ea9dd4 100644
--- a/src/riff.c
+++ b/src/riff.c
@@ -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;