[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#681178: unblock: libburn/1.2.2-2



Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock

Hi, [ please Cc me on replies, I'm not subscribed to -release ]

I've got three minor bugfixes from not yet released libburn 1.2.4,
which I'd like to apply to libburn/1.2.2-1. I've not yet uploaded
libburn 1.2.2-2, so this is a request for upload to sid and unblock.
Both, Thomas Schmitt and I agree we want them in wheezy. Our test suite
found in libisoburn/releng, which tries to cover most of the libburn,
libisofs, libisoburn functionality reveals no regressions.

Full debdiff attached, changelog follows inline:

libburn (1.2.2-2) unstable; urgency=low

  * Bugfix patch (Closes: #680910)
    01_sao-tracks-started-by-audio-pause:
    CD SAO sessions with data tracks was started by an audio pause.
    Affected is an old Sony CD burner, refusing to burn SAO.
  * Bugfix patch (Closes: #680911)
    02_sao-2-sectors-short-fix:
    CD tracks are perceived 2 sectors too short.
    A correclty burnt CD media in SAO mode, will not be recognized
    as correct burn by xorriso inspection, which believes that the
    track size is two sectors shorter, where it is not.
  * Bugfix patch (Closes: #680968)
    03_cdrskin-sigsegv-track-source-added-no-drive-available
    cdrskin could SIGSEGV if track source was added when no drive
    was available.

 -- George Danchev <danchev@spnet.net>  Mon, 09 Jul 2012 10:47:15 +0200


unblock libburn/1.2.2-2

-- System Information:
Debian Release: wheezy/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 3.2.0-3-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
diff -Nru libburn-1.2.2/debian/changelog libburn-1.2.2/debian/changelog
--- libburn-1.2.2/debian/changelog	2012-04-03 15:24:18.000000000 +0200
+++ libburn-1.2.2/debian/changelog	2012-07-10 17:42:31.000000000 +0200
@@ -1,3 +1,22 @@
+libburn (1.2.2-2) unstable; urgency=low
+
+  * Bugfix patch (Closes: #680910)
+    01_sao-tracks-started-by-audio-pause:
+    CD SAO sessions with data tracks was started by an audio pause.
+    Affected is an old Sony CD burner, refusing to burn SAO.
+  * Bugfix patch (Closes: #680911)
+    02_sao-2-sectors-short-fix:
+    CD tracks are perceived 2 sectors too short.
+    A correclty burnt CD media in SAO mode, will not be recognized
+    as correct burn by xorriso inspection, which believes that the
+    track size is two sectors shorter, where it is not.
+  * Bugfix patch (Closes: #680968)
+    03_cdrskin-sigsegv-track-source-added-no-drive-available
+    cdrskin could SIGSEGV if track source was added when no drive
+    was available.
+
+ -- George Danchev <danchev@spnet.net>  Mon, 09 Jul 2012 10:47:15 +0200
+
 libburn (1.2.2-1) unstable; urgency=low
 
   * New upstream release
diff -Nru libburn-1.2.2/debian/patches/01_sao-tracks-started-by-audio-pause libburn-1.2.2/debian/patches/01_sao-tracks-started-by-audio-pause
--- libburn-1.2.2/debian/patches/01_sao-tracks-started-by-audio-pause	1970-01-01 01:00:00.000000000 +0100
+++ libburn-1.2.2/debian/patches/01_sao-tracks-started-by-audio-pause	2012-07-10 17:42:31.000000000 +0200
@@ -0,0 +1,99 @@
+Description: CD SAO sessions with data tracks was started by an audio pause.
+             Affected is an old Sony CD burner, refusing to burn SAO.
+Author: Thomas Schmitt <scdbackup@gmx.net>
+Origin: upstream, http://libburnia-project.org/changeset/4744
+Bug: none
+Bug-Debian: http://bugs.debian.org/680910
+Forwarded: not-needed
+Reviewed-By: George Danchev <danchev@spnet.net>
+Last-Update: 2012-07-10>
+
+--- libburn-1.2.2.orig/doc/cookbook.txt
++++ libburn-1.2.2/doc/cookbook.txt
+@@ -296,8 +296,9 @@ A pre-gap of 2 seconds is mandatory only
+ post-gap may be needed with further tracks if they have neighbors with
+ different DATA FORM values. (Such mixing is not yet supported by libburn.)
+ 
+-DATA FORM is 00h for audio payload, 01h for audio pause, 10h for data,
+-41h for CD-TEXT in Lead-in. 
++DATA FORM is 00h for audio payload, 01h for audio pause (Lead-in and Lead-out),
++10h for data, 14h for data pause (Lead-in and Lead-out).
++This shall be ored with 40h for CD-TEXT in Lead-in. 
+ (mmc5r03c.pdf 6.33.3.11 CD-DA Data Form, 6.33.3.12 CD-ROM mode 1 Form)
+ 
+ SCMS value 80h in conjunction with bit5 of CTL is an indicator for exhausted
+@@ -318,7 +319,8 @@ The next entry (eventually being the fir
+ Its content is 
+ (CTL|ADR ,00h,00h, DATA FORM ,00h,00h,00h,00h)
+ With the CTL|ADR for the first track: 41h for data, 01h for audio.
+-DATA FORM is 41h if CD-TEXT shall be stored in Lean-in. Else it is 01h.
++DATA FORM is pause (audio=01h, data=14h). Ored with 40h if CD-TEXT shall
++be stored in Lean-in.
+ 
+ The LBA for the first write is negative: -150. This corresponds to MSF address
+ 00h:00h:00h. All addresses are to be given in MSF format.
+@@ -354,8 +356,9 @@ A track must at least contain 300 payloa
+ (mmc5r03c.pdf 6.33.3.6)
+ 
+ At the end of the session there is a lead-out entry
+-(CTL|ADR,AAh,01h,01h,00h,MIN,SEC,FRAME)
++(CTL|ADR,AAh,01h,DATA FORM,00h,MIN,SEC,FRAME)
+ marking the end of the last track. (With libburn CTL is as of the last track.)
++DATA FORM is 01h for audio, 14h for data.
+ 
+ 
+ -------------------------------------------------------------------------------
+--- libburn-1.2.2.orig/libburn/write.c
++++ libburn-1.2.2/libburn/write.c
+@@ -508,11 +508,13 @@ struct cue_sheet *burn_create_toc_entrie
+ 			"Track mode has unusable value", 0, 0);
+ 		goto failed;
+ 	}
++	if (tar[0]->mode & BURN_AUDIO)
++		leadin_form = 0x01;
++	else
++		leadin_form = 0x14;
+ 	if (o->num_text_packs > 0) {
+-		leadin_form = 0x41;
++		leadin_form |= 0x40;
+ 	} else {
+-		leadin_form = 0x01;
+-
+ 		/* Check for CD-TEXT in session. Not the final creation,
+ 		   because the cue sheet content might be needed for CD-TEXT
+ 		   pack type 0x88 "TOC".
+@@ -522,7 +524,7 @@ struct cue_sheet *burn_create_toc_entrie
+ 			if (ret < 0)
+ 				goto failed;
+ 			else if (ret > 0)
+-				leadin_form = 0x41;
++				leadin_form |= 0x40;
+ 		}
+ 	}
+ 
+@@ -803,7 +805,9 @@ XXX this is untested :)
+ 	e[2].pmin = m;
+ 	e[2].psec = s;
+ 	e[2].pframe = f;
+-	ret = add_cue(sheet, ctladr | 1, 0xAA, 1, 1, 0, runtime);
++
++	ret = add_cue(sheet, ctladr | 1, 0xAA, 1, leadin_form & 0x3f,
++                      0, runtime);
+ 	if (ret <= 0)
+ 		goto failed;
+ 	return sheet;
+--- libburn-1.2.2.orig/libburn/mmc.c
++++ libburn-1.2.2/libburn/mmc.c
+@@ -908,6 +908,12 @@ int mmc_write(struct burn_drive *d, int
+ 	extern int burn_sg_log_scsi;
+ #endif
+ 
++/*
++fprintf(stderr, "libburn_DEBUG: buffer sectors= %d  bytes= %d\n",
++        buf->sectors, buf->bytes);
++*/
++
++
+ 	c = &(d->casual_command);
+ 
+ #ifdef Libburn_log_in_and_out_streaM
diff -Nru libburn-1.2.2/debian/patches/02_sao-2-sectors-short-fix libburn-1.2.2/debian/patches/02_sao-2-sectors-short-fix
--- libburn-1.2.2/debian/patches/02_sao-2-sectors-short-fix	1970-01-01 01:00:00.000000000 +0100
+++ libburn-1.2.2/debian/patches/02_sao-2-sectors-short-fix	2012-07-10 17:42:32.000000000 +0200
@@ -0,0 +1,25 @@
+Description: CD tracks are perceived 2 sectors too short.
+ A correclty burnt CD media in SAO mode, will not be recognized
+ as correct burn by xorriso inspection, which believes that the
+ track size is two sectors shorter, where it is not.
+Author: Thomas Schmitt <scdbackup@gmx.net>
+Origin: upstream, http://libburnia-project.org/changeset/4778
+Bug: none
+Bug-Debian: http://bugs.debian.org/680911
+Forwarded: not-needed
+Reviewed-By: George Danchev <danchev@spnet.net>
+Last-Update: 2012-07-10
+
+--- libburn-1.2.2.orig/libburn/structure.c
++++ libburn-1.2.2/libburn/structure.c
+@@ -794,7 +794,9 @@ int burn_disc_cd_toc_extensions(struct b
+ 				if (ret > 0) {
+ 					ret = mmc_four_char_to_int(
+ 							buf->data + 24);
+-					if (ret < prev_entry->track_blocks)
++					if (ret < prev_entry->track_blocks &&
++					    ((!drive->current_is_cd_profile) ||
++					   ret < prev_entry->track_blocks - 2))
+ 						prev_entry->track_blocks = ret;
+ 				}
+ 				prev_entry->extensions_valid |= 1;
diff -Nru libburn-1.2.2/debian/patches/03_cdrskin-sigsegv-track-source-added-no-drive-available libburn-1.2.2/debian/patches/03_cdrskin-sigsegv-track-source-added-no-drive-available
--- libburn-1.2.2/debian/patches/03_cdrskin-sigsegv-track-source-added-no-drive-available	1970-01-01 01:00:00.000000000 +0100
+++ libburn-1.2.2/debian/patches/03_cdrskin-sigsegv-track-source-added-no-drive-available	2012-07-10 17:42:32.000000000 +0200
@@ -0,0 +1,90 @@
+Description: cdrskin SIGSEGV if track source was added when no drive was available
+Author: Thomas Schmitt <scdbackup@gmx.net>
+Origin: upstream, http://libburnia-project.org/changeset/4698
+Bug: none
+Bug-Debian: http://bugs.debian.org/680968
+Forwarded: not-needed
+Reviewed-By: George Danchev <danchev@spnet.net>
+Last-Update: 2012-07-10
+
+--- libburn-1.2.2.orig/cdrskin/cdrskin.c
++++ libburn-1.2.2/cdrskin/cdrskin.c
+@@ -1341,8 +1341,13 @@ int Cdrtrack_open_source_path(struct Cdr
+  else {
+    *fd= -1;
+ 
+-   Cdrskin_get_device_adr(track->boss,&device_adr,&raw_adr,
+-                          &no_convert_fs_adr,0);
++ ret= Cdrskin_get_device_adr(track->boss,&device_adr,&raw_adr,
++                             &no_convert_fs_adr,0);
++ if(ret <= 0) {
++   fprintf(stderr,
++           "cdrskin: FATAL : No drive found. Cannot prepare track.\n");
++   return(0);
++ }
+ /*    
+    fprintf(stderr,
+            "cdrskin: DEBUG : device_adr='%s' , raw_adr='%s' , ncfs=%d\n",
+@@ -3706,12 +3711,25 @@ int Cdrskin_destroy(struct CdrskiN **o,
+ }
+ 
+ 
++int Cdrskin_assert_driveno(struct CdrskiN *skin, int flag)
++{
++ if(skin->driveno < 0 || (unsigned int) skin->driveno >= skin->n_drives) {
++   fprintf(stderr,
++       "cdrskin: FATAL : No drive found. Cannot perform desired operation.\n");
++   return(0);
++ }
++ return(1);
++}
++
++
+ /** Return the addresses of the drive. device_adr is the libburn persistent
+     address of the drive, raw_adr is the address as given by the user.
+ */
+ int Cdrskin_get_device_adr(struct CdrskiN *skin,
+            char **device_adr, char **raw_adr, int *no_convert_fs_adr, int flag)
+ {
++ if(skin->driveno < 0 || (unsigned int) skin->driveno >= skin->n_drives)
++   return(0);
+  burn_drive_get_adr(&skin->drives[skin->driveno],skin->device_adr);
+  *device_adr= skin->device_adr;
+  *raw_adr= skin->preskin->raw_device_adr;
+@@ -3782,6 +3800,10 @@ int Cdrskin_attach_fifo(struct CdrskiN *
+  int profile_number;
+  char profile_name[80];
+ 
++ ret= Cdrskin_assert_driveno(skin, 0);
++ if(ret <= 0)
++   return(ret);
++
+  /* Refuse here and thus use libburn fifo only with single track, non-CD */
+  ret= burn_disc_get_profile(skin->drives[skin->driveno].drive,
+                             &profile_number, profile_name);
+@@ -3960,6 +3982,9 @@ int Cdrskin_grab_drive(struct CdrskiN *s
+      drive= NULL;
+      skin->grabbed_drive= drive;
+    } else {
++     ret= Cdrskin_assert_driveno(skin, 0);
++     if(ret <= 0)
++       return(ret);
+      drive= skin->drives[skin->driveno].drive;
+      skin->grabbed_drive= drive;
+    }
+@@ -8720,12 +8745,15 @@ int Cdrskin_create(struct CdrskiN **o, s
+      {*exit_value= 2; goto ex;}
+    }
+    skin->n_drives= 1;
++   skin->driveno= 0;
+    burn_drive_release(skin->drives[0].drive, 0);
+  } else {
+    while (!burn_drive_scan(&(skin->drives), &(skin->n_drives))) {
+      usleep(20000);
+      /* >>> ??? set a timeout ? */
+    }
++   if(skin->n_drives <= 0)
++     skin->driveno= -1;
+  }
+ 
+  burn_msgs_set_severities(skin->preskin->queue_severity,
diff -Nru libburn-1.2.2/debian/patches/series libburn-1.2.2/debian/patches/series
--- libburn-1.2.2/debian/patches/series	1970-01-01 01:00:00.000000000 +0100
+++ libburn-1.2.2/debian/patches/series	2012-07-10 17:42:32.000000000 +0200
@@ -0,0 +1,3 @@
+01_sao-tracks-started-by-audio-pause
+02_sao-2-sectors-short-fix
+03_cdrskin-sigsegv-track-source-added-no-drive-available

Reply to: