| From 93b6e4b5b0efa47b318151d39c35277fc06525f1 Mon Sep 17 00:00:00 2001 |
| Message-Id: <93b6e4b5b0efa47b318151d39c35277fc06525f1.1511192342.git.agx@sigxcpu.org> |
| From: =?UTF-8?q?Guido=20G=C3=BCnther?= <agx@sigxcpu.org> |
| Date: Wed, 15 Nov 2017 18:36:58 +0100 |
| Subject: [PATCH] Handle vorbis_analysis_headerout errors |
| |
| This is related to |
| |
| https://github.com/xiph/vorbis/pull/34 |
| |
| but could also happen today with on other errors in the called function. |
| https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=882236 |
| Forwarded: sox-devel@lists.sourceforge.net |
| --- |
| src/vorbis.c | 8 ++++++-- |
| 1 file changed, 6 insertions(+), 2 deletions(-) |
| |
| Index: sox/src/vorbis.c |
| =================================================================== |
| --- sox.orig/src/vorbis.c |
| +++ sox/src/vorbis.c |
| @@ -270,8 +270,11 @@ static int write_vorbis_header(sox_forma |
| vc.comment_lengths[i] = strlen(text); |
| } |
| } |
| - vorbis_analysis_headerout( /* Build the packets */ |
| - &ve->vd, &vc, &header_main, &header_comments, &header_codebooks); |
| + if (vorbis_analysis_headerout( /* Build the packets */ |
| + &ve->vd, &vc, &header_main, &header_comments, &header_codebooks) < 0) { |
| + ret = HEADER_ERROR; |
| + goto cleanup; |
| + } |
| |
| ogg_stream_packetin(&ve->os, &header_main); /* And stream them out */ |
| ogg_stream_packetin(&ve->os, &header_comments); |
| @@ -280,6 +283,7 @@ static int write_vorbis_header(sox_forma |
| while (ogg_stream_flush(&ve->os, &ve->og) && ret == HEADER_OK) |
| if (!oe_write_page(&ve->og, ft)) |
| ret = HEADER_ERROR; |
| +cleanup: |
| for (i = 0; i < vc.comments; ++i) |
| free(vc.user_comments[i]); |
| free(vc.user_comments); |