decoder/flac: validate the sample rate when scanning the tag
Don't calculate the song duration when the sample rate is 0 (division by zero crash).
This commit is contained in:
parent
8d1c7ca206
commit
6aa6a9c272
1
NEWS
1
NEWS
|
@ -1,6 +1,7 @@
|
|||
ver 0.16.4 (2010/??/??)
|
||||
* decoder:
|
||||
- ffmpeg: workaround for semantic API change in recent ffmpeg versions
|
||||
- flac: validate the sample rate when scanning the tag
|
||||
|
||||
|
||||
ver 0.16.3 (2011/06/04)
|
||||
|
|
|
@ -224,6 +224,7 @@ flac_tag_apply_metadata(struct tag *tag, const char *track,
|
|||
break;
|
||||
|
||||
case FLAC__METADATA_TYPE_STREAMINFO:
|
||||
if (block->data.stream_info.sample_rate > 0)
|
||||
tag->time = flac_duration(&block->data.stream_info);
|
||||
break;
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#ifndef MPD_FLAC_METADATA_H
|
||||
#define MPD_FLAC_METADATA_H
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdbool.h>
|
||||
#include <FLAC/metadata.h>
|
||||
|
||||
|
@ -29,6 +30,8 @@ struct replay_gain_info;
|
|||
static inline unsigned
|
||||
flac_duration(const FLAC__StreamMetadata_StreamInfo *stream_info)
|
||||
{
|
||||
assert(stream_info->sample_rate > 0);
|
||||
|
||||
return (stream_info->total_samples + stream_info->sample_rate - 1) /
|
||||
stream_info->sample_rate;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue