libbalsa/address-book-ldif.c in 2.3.1



Hi Peter and everyone,

I'm trying to justify the following patch that was made from 2.3.1 to
2.3.0 to the Debian release managers who are now reviewing
2.3.0-1sarge2.

Is the following fix absolutely essential for external address support
to work with Balsa 2.3.0?

Cheers,
Andrew Lau

diff -ruN balsa-2.3.0.orig/libbalsa/address-book-ldif.c balsa-2.3.0/libbalsa/address-book-ldif.c
--- balsa-2.3.0.orig/libbalsa/address-book-ldif.c	2005-02-07 14:03:03.000000000 +1100
+++ balsa-2.3.0/libbalsa/address-book-ldif.c	2005-05-13 01:54:43.000000000 +1000
@@ -228,15 +228,17 @@
 
 /* raw bytes to null-terminated base 64 string */
 static void
-string_to_base64(unsigned char *out, const unsigned char *in, size_t len,
-		 size_t olen)
+string_to_base64(char *out, const char *in, size_t len, size_t olen)
 {
+  unsigned char in0, in1, in2;
+
   while (len >= 3 && olen > 10)
   {
-    *out++ = B64Chars[in[0] >> 2];
-    *out++ = B64Chars[((in[0] << 4) & 0x30) | (in[1] >> 4)];
-    *out++ = B64Chars[((in[1] << 2) & 0x3c) | (in[2] >> 6)];
-    *out++ = B64Chars[in[2] & 0x3f];
+    in0 = in[0]; in1 = in[1]; in2 = in[2];
+    *out++ = B64Chars[in0 >> 2];
+    *out++ = B64Chars[((in0 << 4) & 0x30) | (in1 >> 4)];
+    *out++ = B64Chars[((in1 << 2) & 0x3c) | (in2 >> 6)];
+    *out++ = B64Chars[in2 & 0x3f];
     olen  -= 4;
     len   -= 3;
     in    += 3;
@@ -247,12 +249,18 @@
   {
     unsigned char fragment;
 
-    *out++ = B64Chars[in[0] >> 2];
-    fragment = (in[0] << 4) & 0x30;
-    if (len > 1)
-      fragment |= in[1] >> 4;
-    *out++ = B64Chars[fragment];
-    *out++ = (len < 2) ? '=' : B64Chars[(in[1] << 2) & 0x3c];
+    in0 = in[0];
+    *out++ = B64Chars[in0 >> 2];
+    fragment = (in0 << 4) & 0x30;
+    if (len > 1) {
+      in1 = in[1];
+      fragment |= in1 >> 4;
+      *out++ = B64Chars[fragment];
+      *out++ = B64Chars[(in1 << 2) & 0x3c];
+    } else {
+      *out++ = B64Chars[fragment];
+      *out++ = '=';
+    }
     *out++ = '=';
   }
   *out = '\0';

-- 
---------------------------------------------------------------------------
     Andrew "Netsnipe" Lau	<http://www.cse.unsw.edu.au/~alau/>
	 Debian GNU/Linux Maintainer & Computer Science, UNSW
				     -
		  "Nobody expects the Debian Inquisition!
     Our two weapons are fear and surprise...and ruthless efficiency!"
---------------------------------------------------------------------------

Attachment: signature.asc
Description: Digital signature



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