Commit 6aa6a9c2 authored by Max Kellermann's avatar Max Kellermann

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).
parent 8d1c7ca2
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,7 +224,8 @@ flac_tag_apply_metadata(struct tag *tag, const char *track,
break;
case FLAC__METADATA_TYPE_STREAMINFO:
tag->time = flac_duration(&block->data.stream_info);
if (block->data.stream_info.sample_rate > 0)
tag->time = flac_duration(&block->data.stream_info);
break;
default:
......
......@@ -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;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment