Bug#658818: fails to handle cuesheets with 99 tracks
Package: cuetools
Version: 1.3.1-9
Severity: normal
There's an off-by-one error in cd.c which causes cueprint to wrongly reject
cuesheets with 99 tracks. Its actual limit is 98 tracks, and yet as the
source code notes, the Red Book audio standard permits 99 tracks per disc
(and 99 indices per track).
When I looked into this, I saw that:
1) not only will the same error occur with index numbers, but
2) the wrong preprocessor symbol is being expanded when checking the index
number.
(Can this few people really have ever dealt with Nine Inch Nails's _Broken_
EP? It's not exactly an obscure title, especially among hackers...)
Please find attached a cuesheet which will enable reproduction of the
problem, and a tested patch fixing it.
To reproduce:
$ cueprint -d '%N\n' Nine\ Inch\ Nails/05.Broken.flac.cue
Full disclosure: I did not test the index number breakage, nor my fix for
it.
-- System Information:
Debian Release: 6.0.4
APT prefers stable
APT policy: (500, 'stable')
Architecture: powerpc (ppc64)
Kernel: Linux 2.6.32-5-powerpc64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
PERFORMER "Nine Inch Nails"
TITLE "Broken"
FILE "dummy.wav" WAVE
TRACK 01 AUDIO
TITLE "Pinion"
INDEX 01 00:00:00
TRACK 02 AUDIO
TITLE "Wish"
INDEX 01 01:03:12
TRACK 03 AUDIO
TITLE "Last"
INDEX 01 04:49:67
TRACK 04 AUDIO
TITLE "Help Me I Am in Hell"
INDEX 01 09:34:35
TRACK 05 AUDIO
TITLE "Happiness in Slavery"
INDEX 01 11:30:50
TRACK 06 AUDIO
TITLE "Gave Up"
INDEX 01 16:51:57
TRACK 07 AUDIO
TITLE "untitled"
INDEX 01 21:00:25
TRACK 08 AUDIO
TITLE "untitled"
INDEX 01 21:01:25
TRACK 09 AUDIO
TITLE "untitled"
INDEX 01 21:02:25
TRACK 10 AUDIO
TITLE "untitled"
INDEX 01 21:03:25
TRACK 11 AUDIO
TITLE "untitled"
INDEX 01 21:04:25
TRACK 12 AUDIO
TITLE "untitled"
INDEX 01 21:05:25
TRACK 13 AUDIO
TITLE "untitled"
INDEX 01 21:06:25
TRACK 14 AUDIO
TITLE "untitled"
INDEX 01 21:07:25
TRACK 15 AUDIO
TITLE "untitled"
INDEX 01 21:08:25
TRACK 16 AUDIO
TITLE "untitled"
INDEX 01 21:09:25
TRACK 17 AUDIO
TITLE "untitled"
INDEX 01 21:10:25
TRACK 18 AUDIO
TITLE "untitled"
INDEX 01 21:11:25
TRACK 19 AUDIO
TITLE "untitled"
INDEX 01 21:12:25
TRACK 20 AUDIO
TITLE "untitled"
INDEX 01 21:13:25
TRACK 21 AUDIO
TITLE "untitled"
INDEX 01 21:14:25
TRACK 22 AUDIO
TITLE "untitled"
INDEX 01 21:15:25
TRACK 23 AUDIO
TITLE "untitled"
INDEX 01 21:16:25
TRACK 24 AUDIO
TITLE "untitled"
INDEX 01 21:17:25
TRACK 25 AUDIO
TITLE "untitled"
INDEX 01 21:18:25
TRACK 26 AUDIO
TITLE "untitled"
INDEX 01 21:19:25
TRACK 27 AUDIO
TITLE "untitled"
INDEX 01 21:20:25
TRACK 28 AUDIO
TITLE "untitled"
INDEX 01 21:21:25
TRACK 29 AUDIO
TITLE "untitled"
INDEX 01 21:22:25
TRACK 30 AUDIO
TITLE "untitled"
INDEX 01 21:23:25
TRACK 31 AUDIO
TITLE "untitled"
INDEX 01 21:24:25
TRACK 32 AUDIO
TITLE "untitled"
INDEX 01 21:25:25
TRACK 33 AUDIO
TITLE "untitled"
INDEX 01 21:26:25
TRACK 34 AUDIO
TITLE "untitled"
INDEX 01 21:27:25
TRACK 35 AUDIO
TITLE "untitled"
INDEX 01 21:28:25
TRACK 36 AUDIO
TITLE "untitled"
INDEX 01 21:29:25
TRACK 37 AUDIO
TITLE "untitled"
INDEX 01 21:30:25
TRACK 38 AUDIO
TITLE "untitled"
INDEX 01 21:31:25
TRACK 39 AUDIO
TITLE "untitled"
INDEX 01 21:32:25
TRACK 40 AUDIO
TITLE "untitled"
INDEX 01 21:33:25
TRACK 41 AUDIO
TITLE "untitled"
INDEX 01 21:34:25
TRACK 42 AUDIO
TITLE "untitled"
INDEX 01 21:35:25
TRACK 43 AUDIO
TITLE "untitled"
INDEX 01 21:36:25
TRACK 44 AUDIO
TITLE "untitled"
INDEX 01 21:37:25
TRACK 45 AUDIO
TITLE "untitled"
INDEX 01 21:38:25
TRACK 46 AUDIO
TITLE "untitled"
INDEX 01 21:39:25
TRACK 47 AUDIO
TITLE "untitled"
INDEX 01 21:40:25
TRACK 48 AUDIO
TITLE "untitled"
INDEX 01 21:41:25
TRACK 49 AUDIO
TITLE "untitled"
INDEX 01 21:42:25
TRACK 50 AUDIO
TITLE "untitled"
INDEX 01 21:43:25
TRACK 51 AUDIO
TITLE "untitled"
INDEX 01 21:44:25
TRACK 52 AUDIO
TITLE "untitled"
INDEX 01 21:45:25
TRACK 53 AUDIO
TITLE "untitled"
INDEX 01 21:46:25
TRACK 54 AUDIO
TITLE "untitled"
INDEX 01 21:47:25
TRACK 55 AUDIO
TITLE "untitled"
INDEX 01 21:48:25
TRACK 56 AUDIO
TITLE "untitled"
INDEX 01 21:49:25
TRACK 57 AUDIO
TITLE "untitled"
INDEX 01 21:50:25
TRACK 58 AUDIO
TITLE "untitled"
INDEX 01 21:51:25
TRACK 59 AUDIO
TITLE "untitled"
INDEX 01 21:52:25
TRACK 60 AUDIO
TITLE "untitled"
INDEX 01 21:53:25
TRACK 61 AUDIO
TITLE "untitled"
INDEX 01 21:54:25
TRACK 62 AUDIO
TITLE "untitled"
INDEX 01 21:55:25
TRACK 63 AUDIO
TITLE "untitled"
INDEX 01 21:56:25
TRACK 64 AUDIO
TITLE "untitled"
INDEX 01 21:57:25
TRACK 65 AUDIO
TITLE "untitled"
INDEX 01 21:58:25
TRACK 66 AUDIO
TITLE "untitled"
INDEX 01 21:59:25
TRACK 67 AUDIO
TITLE "untitled"
INDEX 01 22:00:25
TRACK 68 AUDIO
TITLE "untitled"
INDEX 01 22:01:25
TRACK 69 AUDIO
TITLE "untitled"
INDEX 01 22:02:25
TRACK 70 AUDIO
TITLE "untitled"
INDEX 01 22:03:25
TRACK 71 AUDIO
TITLE "untitled"
INDEX 01 22:04:25
TRACK 72 AUDIO
TITLE "untitled"
INDEX 01 22:05:25
TRACK 73 AUDIO
TITLE "untitled"
INDEX 01 22:06:25
TRACK 74 AUDIO
TITLE "untitled"
INDEX 01 22:07:25
TRACK 75 AUDIO
TITLE "untitled"
INDEX 01 22:08:25
TRACK 76 AUDIO
TITLE "untitled"
INDEX 01 22:09:25
TRACK 77 AUDIO
TITLE "untitled"
INDEX 01 22:10:25
TRACK 78 AUDIO
TITLE "untitled"
INDEX 01 22:11:25
TRACK 79 AUDIO
TITLE "untitled"
INDEX 01 22:12:25
TRACK 80 AUDIO
TITLE "untitled"
INDEX 01 22:13:25
TRACK 81 AUDIO
TITLE "untitled"
INDEX 01 22:14:25
TRACK 82 AUDIO
TITLE "untitled"
INDEX 01 22:15:25
TRACK 83 AUDIO
TITLE "untitled"
INDEX 01 22:16:25
TRACK 84 AUDIO
TITLE "untitled"
INDEX 01 22:17:25
TRACK 85 AUDIO
TITLE "untitled"
INDEX 01 22:18:25
TRACK 86 AUDIO
TITLE "untitled"
INDEX 01 22:19:25
TRACK 87 AUDIO
TITLE "untitled"
INDEX 01 22:20:25
TRACK 88 AUDIO
TITLE "untitled"
INDEX 01 22:21:25
TRACK 89 AUDIO
TITLE "untitled"
INDEX 01 22:22:25
TRACK 90 AUDIO
TITLE "untitled"
INDEX 01 22:23:25
TRACK 91 AUDIO
TITLE "untitled"
INDEX 01 22:24:25
TRACK 92 AUDIO
TITLE "untitled"
INDEX 01 22:25:25
TRACK 93 AUDIO
TITLE "untitled"
INDEX 01 22:26:25
TRACK 94 AUDIO
TITLE "untitled"
INDEX 01 22:27:25
TRACK 95 AUDIO
TITLE "untitled"
INDEX 01 22:28:25
TRACK 96 AUDIO
TITLE "untitled"
INDEX 01 22:29:25
TRACK 97 AUDIO
TITLE "untitled"
INDEX 01 22:30:25
TRACK 98 AUDIO
TITLE "Physical (You're So)"
INDEX 01 22:31:25
TRACK 99 AUDIO
TITLE "Suck"
INDEX 01 28:01:15
diff -urN cuetools-1.3.1~/src/lib/cd.c cuetools-1.3.1/src/lib/cd.c
--- cuetools-1.3.1~/src/lib/cd.c 2012-02-05 23:35:20.000000000 -0500
+++ cuetools-1.3.1/src/lib/cd.c 2012-02-05 23:36:51.000000000 -0500
@@ -125,7 +125,7 @@
Track *cd_add_track (Cd *cd)
{
- if (MAXTRACK - 1 > cd->ntrack)
+ if (MAXTRACK > cd->ntrack)
cd->ntrack++;
else
fprintf(stderr, "too many tracks\n");
@@ -261,7 +261,7 @@
void track_add_index (Track *track, long index)
{
- if (MAXTRACK - 1 > track->nindex)
+ if (MAXINDEX > track->nindex)
track->nindex++;
else
fprintf(stderr, "too many indexes\n");
Reply to: