[Sumover-dev] [svn commit] r4057 - common/trunk/src

sumover-dev at cs.ucl.ac.uk sumover-dev at cs.ucl.ac.uk
Mon Jun 4 12:38:01 BST 2007


Author: piers
Date: Mon Jun  4 12:38:00 2007
New Revision: 4057

Modified:
   common/trunk/src/mbus_config.c

Log:
Fixed problems from last change - now properly fails-over to non-encryption is key is garbled.


Modified: common/trunk/src/mbus_config.c
==============================================================================
--- common/trunk/src/mbus_config.c	(original)
+++ common/trunk/src/mbus_config.c	Mon Jun  4 12:38:00 2007
@@ -404,11 +404,12 @@
                                 assert(key->key!=NULL);
 				key->key_len = strlen(key->key);
 				tmp = (char *) xmalloc(key->key_len);
-				key->key = tmp;
 				if ((key->key_len = base64decode((unsigned char *)key->key, key->key_len, (unsigned char *)tmp, key->key_len))==-1) {
 				  debug_msg("Error in base64decode  of key from file - using NO encyption\n");
 				  key->key     = NULL;
 				  key->key_len = 0;
+				} else {
+				  key->key = tmp;
 				}
 			} else {
 				key->key     = NULL;
@@ -455,8 +456,13 @@
 		key->key     = (char *) strtok(NULL  , ")");
 		key->key_len = strlen(key->key);
 		tmp = (char *) xmalloc(key->key_len);
-		key->key_len = base64decode(key->key, key->key_len, tmp, key->key_len);
-		key->key = tmp;
+		if ((key->key_len = base64decode((unsigned char *)key->key, key->key_len, (unsigned char *)tmp, key->key_len))==-1) {
+		  debug_msg("Error in base64decode  of key from file - using NO encyption\n");
+		  key->key     = NULL;
+		  key->key_len = 0;
+		} else {
+		  key->key = tmp;
+		}
 	} else {
 		key->key     = NULL;
 		key->key_len = 0;
@@ -465,7 +471,7 @@
 #else
 	mbus_get_key(m, key, "ENCRYPTIONKEY=(");
 #endif
-	if (strcmp(key->algorithm, "DES") == 0) {
+	if ((strcmp(key->algorithm, "DES")  == 0) && (key->key_len!=0)) {
 		assert(key->key != NULL);
 		assert(key->key_len == 8);
 
@@ -513,8 +519,13 @@
 
 	/* Decode the key... */
 	tmp = (char *) xmalloc(key->key_len);
-	key->key_len = base64decode(key->key, key->key_len, tmp, key->key_len);
-	key->key = tmp;
+	if ((key->key_len = base64decode((unsigned char *)key->key, key->key_len, (unsigned char *)tmp, key->key_len))==-1) {
+	  debug_msg("Error in base64decode  of key from file - using NO encyption\n");
+	  key->key     = NULL;
+	  key->key_len = 0;
+	} else {
+	  key->key = tmp;
+	}
 
 	xfree(buffer);
 #else



More information about the Sumover-dev mailing list