From a14581642c9e7dcee15d05bde9fd0a6a47350dcc Mon Sep 17 00:00:00 2001 From: Erik de Castro Lopo Date: Wed, 26 Aug 2015 17:13:39 +1000 Subject: [PATCH] libFLAC/format.c: Fix undefined behaviour In the case where seek_table->num_points is zero, seek_table->points will be NULL and passing that to qsort() invokes undefined behaviour. Since seek_table->num_points is zero, the only sensible thing to do is to short circuit return 0. --- src/libFLAC/format.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/libFLAC/format.c b/src/libFLAC/format.c index 0f601afb..0b1d10b5 100644 --- a/src/libFLAC/format.c +++ b/src/libFLAC/format.c @@ -275,6 +275,9 @@ FLAC_API unsigned FLAC__format_seektable_sort(FLAC__StreamMetadata_SeekTable *se FLAC__ASSERT(0 != seek_table); + if (seek_table->num_points == 0) + return 0; + /* sort the seekpoints */ qsort(seek_table->points, seek_table->num_points, sizeof(FLAC__StreamMetadata_SeekPoint), (int (*)(const void *, const void *))seekpoint_compare_);