[brasero] Fix #591880 - Image checksumming causes internal error



commit cc4c9f5ee1b46221aa2f093e15bb8165d059e0b2
Author: Philippe Rouquier <bonfire-app wanadoo fr>
Date:   Wed Aug 26 16:35:00 2009 +0200

    Fix #591880 -  Image checksumming causes internal error
    and probably #591881 -  Internal error with both checksum plugins enabled
    Some time along 2.27 cycle a new checksum type (DETECT) was added but as value 1 replacing MD5 and shifting all checksum type values. The problem is that some users had a GConf value corresponding to MD5 and which after the change became DETECT which could not been handled.
    So now we make sure brasero properly handles incorrect GConf value for checksum types.

 libbrasero-burn/brasero-burn.c         |    5 ++---
 plugins/checksum/burn-checksum-files.c |    8 ++++----
 plugins/checksum/burn-checksum-image.c |   12 +++++-------
 3 files changed, 11 insertions(+), 14 deletions(-)
---
diff --git a/libbrasero-burn/brasero-burn.c b/libbrasero-burn/brasero-burn.c
index 529fc4a..e3710e4 100644
--- a/libbrasero-burn/brasero-burn.c
+++ b/libbrasero-burn/brasero-burn.c
@@ -2185,9 +2185,6 @@ brasero_burn_record_session (BraseroBurn *burn,
 
 	track = tracks->data;
 	type = brasero_track_get_checksum_type (track);
-	if (type == BRASERO_CHECKSUM_NONE)
-		return BRASERO_BURN_OK;
-
 	if (type == BRASERO_CHECKSUM_MD5
 	||  type == BRASERO_CHECKSUM_SHA1
 	||  type == BRASERO_CHECKSUM_SHA256)
@@ -2198,6 +2195,8 @@ brasero_burn_record_session (BraseroBurn *burn,
 		checksum = BRASERO_SHA1_FILE;
 	else if (type == BRASERO_CHECKSUM_SHA256_FILE)
 		checksum = BRASERO_SHA256_FILE;
+	else
+		return BRASERO_BURN_OK;
 
 	/* the idea is to push a new track on the stack with
 	 * the current disc burnt and the checksum generated
diff --git a/plugins/checksum/burn-checksum-files.c b/plugins/checksum/burn-checksum-files.c
index 5474aff..58e3933 100644
--- a/plugins/checksum/burn-checksum-files.c
+++ b/plugins/checksum/burn-checksum-files.c
@@ -528,16 +528,16 @@ brasero_checksum_files_create_checksum (BraseroChecksumFiles *self,
 	checksum_type = gconf_client_get_int (client, GCONF_KEY_CHECKSUM_TYPE, NULL);
 	g_object_unref (client);
 
-	if (checksum_type == BRASERO_CHECKSUM_NONE)
-		gchecksum_type = G_CHECKSUM_MD5;
-	else if (checksum_type & BRASERO_CHECKSUM_MD5_FILE)
+	if (checksum_type & BRASERO_CHECKSUM_MD5_FILE)
 		gchecksum_type = G_CHECKSUM_MD5;
 	else if (checksum_type & BRASERO_CHECKSUM_SHA1_FILE)
 		gchecksum_type = G_CHECKSUM_SHA1;
 	else if (checksum_type & BRASERO_CHECKSUM_SHA256_FILE)
 		gchecksum_type = G_CHECKSUM_SHA256;
-	else
+	else {
+		checksum_type = BRASERO_CHECKSUM_MD5_FILE;
 		gchecksum_type = G_CHECKSUM_MD5;
+	}
 
 	/* opens a file for the sums */
 	switch (gchecksum_type) {
diff --git a/plugins/checksum/burn-checksum-image.c b/plugins/checksum/burn-checksum-image.c
index 89cc663..6ed6246 100644
--- a/plugins/checksum/burn-checksum-image.c
+++ b/plugins/checksum/burn-checksum-image.c
@@ -419,9 +419,6 @@ brasero_checksum_get_checksum_type (void)
 	checksum_type = gconf_client_get_int (client, GCONF_KEY_CHECKSUM_TYPE, NULL);
 	g_object_unref (client);
 
-	if (!checksum_type)
-		checksum_type = BRASERO_CHECKSUM_MD5;
-
 	return checksum_type;
 }
 
@@ -436,16 +433,17 @@ brasero_checksum_image_image_and_checksum (BraseroChecksumImage *self,
 	priv = BRASERO_CHECKSUM_IMAGE_PRIVATE (self);
 
 	priv->checksum_type = brasero_checksum_get_checksum_type ();
-	if (priv->checksum_type == BRASERO_CHECKSUM_NONE)
-		checksum_type = G_CHECKSUM_MD5;
-	else if (priv->checksum_type & BRASERO_CHECKSUM_MD5)
+
+	if (priv->checksum_type & BRASERO_CHECKSUM_MD5)
 		checksum_type = G_CHECKSUM_MD5;
 	else if (priv->checksum_type & BRASERO_CHECKSUM_SHA1)
 		checksum_type = G_CHECKSUM_SHA1;
 	else if (priv->checksum_type & BRASERO_CHECKSUM_SHA256)
 		checksum_type = G_CHECKSUM_SHA256;
-	else
+	else {
 		checksum_type = G_CHECKSUM_MD5;
+		priv->checksum_type = BRASERO_CHECKSUM_MD5;
+	}
 
 	brasero_job_set_current_action (BRASERO_JOB (self),
 					BRASERO_BURN_ACTION_CHECKSUM,



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