summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/rbcodec/metadata/asf.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/lib/rbcodec/metadata/asf.c b/lib/rbcodec/metadata/asf.c
index 82c418cc73..f342a473ea 100644
--- a/lib/rbcodec/metadata/asf.c
+++ b/lib/rbcodec/metadata/asf.c
@@ -515,17 +515,17 @@ static int asf_parse_header(int fd, struct mp3entry* id3,
515 /* Expected is either "01 00 xx xx 03 yy yy yy yy" or 515 /* Expected is either "01 00 xx xx 03 yy yy yy yy" or
516 * "03 yy yy yy yy". xx is the size of the WM/Picture 516 * "03 yy yy yy yy". xx is the size of the WM/Picture
517 * container in bytes. yy equals the raw data length of 517 * container in bytes. yy equals the raw data length of
518 * the embedded image. */ 518 * the embedded image.
519 lseek(fd, -4, SEEK_CUR); 519 *
520 * Also save position after this tag in file in case any parsing errors */
521 uint32_t after_pic_pos = lseek(fd, -4, SEEK_CUR) + 4 + length;
522
520 if (read(fd, &type, 1) != 1) 523 if (read(fd, &type, 1) != 1)
521 type = 0; 524 type = 0;
522 525
523 if (type == 1) { 526 if (type == 1) {
524 lseek(fd, 3, SEEK_CUR); 527 lseek(fd, 3, SEEK_CUR);
525 read(fd, &type, 1); 528 read(fd, &type, 1);
526 /* In case the parsing will fail in the next step we
527 * might at least be able to skip the whole section. */
528 datalength = length - 1;
529 } 529 }
530 if (type == 3) { 530 if (type == 3) {
531 /* Read the raw data length of the embedded image. */ 531 /* Read the raw data length of the embedded image. */
@@ -570,7 +570,7 @@ static int asf_parse_header(int fd, struct mp3entry* id3,
570 } 570 }
571 } 571 }
572 572
573 lseek(fd, datalength, SEEK_CUR); 573 lseek(fd, after_pic_pos, SEEK_SET);
574#endif 574#endif
575 } else if (!strncmp("replaygain_", utf8buf, 11)) { 575 } else if (!strncmp("replaygain_", utf8buf, 11)) {
576 char *value = id3buf; 576 char *value = id3buf;