From 8f38274e900afff60e4809922770d47dafe064c3 Mon Sep 17 00:00:00 2001 From: Michael Giacomelli Date: Sat, 19 Sep 2026 16:06:49 -0400 Subject: [PATCH] warble: zero the mp3entry before reading metadata print_mp3entry() dereferences mb_track_id, but get_metadata() does not set every field of the uninitialized stack struct. For FLAC files this left garbage in the pointer and warble segfaulted in strlen about a third of the time, before decoding started. Clear the struct first. Co-Authored-By: Claude Sonnet 5 --- lib/rbcodec/test/warble.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/rbcodec/test/warble.c b/lib/rbcodec/test/warble.c index 10bc7485a9..4eab14762d 100644 --- a/lib/rbcodec/test/warble.c +++ b/lib/rbcodec/test/warble.c @@ -839,6 +839,9 @@ static void decode_file(const char *input_fn) /* Set up ci */ struct mp3entry id3; + /* get_metadata() doesn't set every field; don't leave stack garbage in the + pointers that print_mp3entry() dereferences */ + memset(&id3, 0, sizeof(id3)); if (!get_metadata(&id3, input_fd, input_fn)) { fprintf(stderr, "error: metadata parsing failed\n"); exit(1);