Переглянути джерело

* apt-pkg/contrib/sha2_internal.cc:
- use a pointer-union to peace gcc strict-aliasing warning

David Kalnischkies 14 роки тому
батько
коміт
1f8fe50296
2 змінених файлів з 16 додано та 4 видалено
  1. 13 3
      apt-pkg/contrib/sha2_internal.cc
  2. 3 1
      debian/changelog

+ 13 - 3
apt-pkg/contrib/sha2_internal.cc

@@ -605,7 +605,12 @@ void SHA256_Final(sha2_byte digest[], SHA256_CTX* context) {
 			*context->buffer = 0x80;
 			*context->buffer = 0x80;
 		}
 		}
 		/* Set the bit count: */
 		/* Set the bit count: */
-		*(sha2_word64*)&context->buffer[SHA256_SHORT_BLOCK_LENGTH] = context->bitcount;
+		union {
+			sha2_byte* c;
+			sha2_word64* l;
+		} bitcount;
+		bitcount.c = &context->buffer[SHA256_SHORT_BLOCK_LENGTH];
+		*(bitcount.l) = context->bitcount;
 
 
 		/* Final transform: */
 		/* Final transform: */
 		SHA256_Transform(context, (sha2_word32*)context->buffer);
 		SHA256_Transform(context, (sha2_word32*)context->buffer);
@@ -922,8 +927,13 @@ static void SHA512_Last(SHA512_CTX* context) {
 		*context->buffer = 0x80;
 		*context->buffer = 0x80;
 	}
 	}
 	/* Store the length of input data (in bits): */
 	/* Store the length of input data (in bits): */
-	*(sha2_word64*)&context->buffer[SHA512_SHORT_BLOCK_LENGTH] = context->bitcount[1];
-	*(sha2_word64*)&context->buffer[SHA512_SHORT_BLOCK_LENGTH+8] = context->bitcount[0];
+	union {
+		sha2_byte* c;
+		sha2_word64* l;
+	} bitcount;
+	bitcount.c = &context->buffer[SHA512_SHORT_BLOCK_LENGTH];
+	bitcount.l[0] = context->bitcount[1];
+	bitcount.l[1] = context->bitcount[0];
 
 
 	/* Final transform: */
 	/* Final transform: */
 	SHA512_Transform(context, (sha2_word64*)context->buffer);
 	SHA512_Transform(context, (sha2_word64*)context->buffer);

+ 3 - 1
debian/changelog

@@ -4,8 +4,10 @@ apt (0.8.16~exp8) experimental; urgency=low
   * apt-pkg/packagemanager.cc:
   * apt-pkg/packagemanager.cc:
     - do not fail on unpacked packages in SmartUnPack, just don't
     - do not fail on unpacked packages in SmartUnPack, just don't
       shedule them for unpack, but do all checks and configure them
       shedule them for unpack, but do all checks and configure them
+  * apt-pkg/contrib/sha2_internal.cc:
+    - use a pointer-union to peace gcc strict-aliasing warning
 
 
- -- David Kalnischkies <kalnischkies@gmail.com>  Mon, 17 Oct 2011 11:21:21 +0200
+ -- David Kalnischkies <kalnischkies@gmail.com>  Sun, 30 Oct 2011 14:15:53 -0500
 
 
 apt (0.8.16~exp7) experimental; urgency=low
 apt (0.8.16~exp7) experimental; urgency=low