From 370a6a7162c06ef30219968faf44fd50488155d3 Mon Sep 17 00:00:00 2001 From: OwenCochell Date: Sun, 9 Nov 2025 00:20:29 -0600 Subject: [PATCH 1/4] Skips over ID3v2 tags when decode through errors is enabled --- src/flac/main.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/flac/main.c b/src/flac/main.c index f45488d180..bea1c286b0 100644 --- a/src/flac/main.c +++ b/src/flac/main.c @@ -54,6 +54,7 @@ #include "local_string_utils.h" /* for flac__strlcat() and flac__strlcpy() */ #include "utils.h" #include "vorbiscomment.h" +#include "foreign_metadata.h" #if 0 /*[JEC] was:#if HAVE_GETOPT_LONG*/ @@ -1522,9 +1523,13 @@ int encode_file(const char *infilename, FLAC__bool is_first_file, FLAC__bool is_ } else { if(!memcmp(lookahead, "ID3", 3)) { - flac__utils_printf(stderr, 1, "ERROR: input file %s has an ID3v2 tag\n", infilename); - conditional_fclose(encode_infile); - return 1; + /* we need to use an internal if to skip the other else if conditions */ + /* this will assume the type based upon file extension when ID3v2 tags are present */ + if(!option_values.continue_through_decode_errors) { + flac__utils_printf(stderr, 1, "ERROR: input file %s has an ID3v2 tag\n", infilename); + conditional_fclose(encode_infile); + return 1; + } } else if(!memcmp(lookahead, "RIFF", 4) && !memcmp(lookahead+8, "WAVE", 4)) input_format = FORMAT_WAVE; From 583b3f288dfc8b5211ad634caeedefa4392ac6a9 Mon Sep 17 00:00:00 2001 From: OwenCochell Date: Sun, 9 Nov 2025 00:21:03 -0600 Subject: [PATCH 2/4] Added ID3v2 tag to input-VA.flac for testing --- .../input-id3v2.flac | Bin 0 -> 2176 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/flac-to-flac-metadata-test-files/input-id3v2.flac diff --git a/test/flac-to-flac-metadata-test-files/input-id3v2.flac b/test/flac-to-flac-metadata-test-files/input-id3v2.flac new file mode 100644 index 0000000000000000000000000000000000000000..bae42e0bcf81d37d50ff71655c5ae3d3f408db07 GIT binary patch literal 2176 zcmeZtF=l1}0^V?Ee_vl9gA>F9f|AtY5(sOQ91Vfd5Eu=C(GVC7fuR=yX+DY0KvydX zF$e)EJ_ZH>t|Lw#7#PHUl>EO^T({MuH&FY@`iLpUNh}Nurxk!|ic-^3i&FEFQx$SD zliYk9ofQoA4E2l^j0_CS3@i*x*??+5>VjMYd>kX)9XNXQG;R%2hg6xqLR$w5?e!dAiE^9Bq!C@ wsEL7rB`q;K_5Y7Z35IN-I1mVQ{r^!Z!N~Ic6NLZ$T!^DPgh?wBe>>to01TB Date: Sun, 9 Nov 2025 00:21:14 -0600 Subject: [PATCH 3/4] Added test for skipping ID3v2 tags --- test/test_flac.sh | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/test/test_flac.sh b/test/test_flac.sh index ba94ceeeee..78248967d4 100755 --- a/test/test_flac.sh +++ b/test/test_flac.sh @@ -38,7 +38,7 @@ run_flac () echo "valgrind --leak-check=yes --show-reachable=yes --num-callers=50 flac $*" >>test_flac.valgrind.log valgrind --leak-check=yes --show-reachable=yes --num-callers=50 --log-fd=4 flac${EXE} $TOTALLY_SILENT --no-error-on-compression-fail $* 4>>test_flac.valgrind.log else - flac${EXE} $TOTALLY_SILENT --no-error-on-compression-fail $* + flac${EXE} --no-error-on-compression-fail $* fi } @@ -1294,6 +1294,36 @@ flac2flac input-SCVA.flac case04e "--no-padding -S 5x" # case 04f: on file with SEEKTABLE block and size-changing option specified, drop existing SEEKTABLE, new SEEKTABLE with default points #(already covered by case03c) +############################################################################ +# test skip ID3v2 tags +############################################################################ + +# Try to work with a flac file that has ID3v2 tag +# without decoding through errors + +if run_flac -o out.flac -f "$testdatadir/input-id3v2.flac" ; then + die "ERROR: it should have failed but didn't" +else + echo "OK, it failed as it should" +fi + +# Decode though errors to seek past IDv3 tag +# and make sure the file metadata matches +# We just added an ID3v2 tag to input-VA.flac, +# So we refrenece it's metadata to ensure the operation wa sucessfull + +if flac2flac input-id3v2.flac case04c "-F --no-padding" ; then + # Test to see if ID3v2 errors are gone + if run_flac -t "out.flac" ; then + echo "Ok, it suceeded and bad tags are gone" + else + die "ID3v2 tags still present in files" + fi +else + echo $? + die "ERROR: it should have succeeded but didn't" +fi + ############################################################################ # test limiting minimum bitrate ############################################################################ From 5211b16cf91d432ab17140c23401c0b52daf0791 Mon Sep 17 00:00:00 2001 From: OwenCochell Date: Sun, 9 Nov 2025 00:44:34 -0600 Subject: [PATCH 4/4] Re-enabled silent mode in flac tests --- test/test_flac.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_flac.sh b/test/test_flac.sh index 78248967d4..2848e62ced 100755 --- a/test/test_flac.sh +++ b/test/test_flac.sh @@ -38,7 +38,7 @@ run_flac () echo "valgrind --leak-check=yes --show-reachable=yes --num-callers=50 flac $*" >>test_flac.valgrind.log valgrind --leak-check=yes --show-reachable=yes --num-callers=50 --log-fd=4 flac${EXE} $TOTALLY_SILENT --no-error-on-compression-fail $* 4>>test_flac.valgrind.log else - flac${EXE} --no-error-on-compression-fail $* + flac${EXE} $TOTALLY_SILENT --no-error-on-compression-fail $* fi }