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");