X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=mp3_afh.c;h=0c8efbdc5a7c59b84d0b64ada3e7b8c648c833d4;hp=ffabfe4eb1479b0d57849ddbae65a583d5013760;hb=2416ea6856cb36d064a079cc5e9674383c8b2eae;hpb=84eb03d39ba8ff9bd71d6d903e9929f1790dae6a diff --git a/mp3_afh.c b/mp3_afh.c index ffabfe4e..0c8efbdc 100644 --- a/mp3_afh.c +++ b/mp3_afh.c @@ -115,9 +115,10 @@ static const char *header_mode(struct mp3header *h) h->mode = 4; /* invalid */ return mode_text[h->mode]; } + static int header_bitrate(struct mp3header *h) { - if (h->layer > 3 || h->bitrate > 14) + if (!h->layer || h->layer > 3 || h->bitrate > 14 || !h->bitrate) return -E_HEADER_BITRATE; return mp3info_bitrate[h->version & 1][3 - h->layer][h->bitrate - 1]; } @@ -240,11 +241,9 @@ static int mp3_seek_next_header(unsigned char *map, off_t numbytes, off_t *fpos) struct mp3header h, h2; long valid_start = 0; - while (1) { - while ((*fpos)++ < numbytes && map[*fpos] != 0xff) - ; - if (*fpos >= numbytes) - return 0; + for (; *fpos < numbytes; (*fpos)++) { + if (map[*fpos] != 0xff) + continue; valid_start = *fpos; first_len = get_header(map, numbytes, fpos, &h); if (first_len <= 0) @@ -263,6 +262,7 @@ static int mp3_seek_next_header(unsigned char *map, off_t numbytes, off_t *fpos) return first_len; } } + return 0; } static void mp3_get_id3(unsigned char *map, off_t numbytes, off_t *fpos)