Index: trunk/configure.ac
===================================================================
--- trunk/configure.ac	(revision 290)
+++ trunk/configure.ac	(revision 291)
@@ -12,5 +12,5 @@
 dnl start
 dnl
-AM_INIT_AUTOMAKE(samhain, 2.7.2)
+AM_INIT_AUTOMAKE(samhain, 2.7.2a)
 AC_DEFINE([SAMHAIN], 1, [Application is samhain])
 AC_CANONICAL_HOST
Index: trunk/docs/Changelog
===================================================================
--- trunk/docs/Changelog	(revision 290)
+++ trunk/docs/Changelog	(revision 291)
@@ -1,2 +1,6 @@
+2.7.2a:
+	* rewrote rijndaelKeySched() in a more conservative way to fix
+	  compile problem on SLES 11.
+
 2.7.2:
 	* sh_utils.c: fixed an endianess issue that prevented cross-verification
Index: trunk/src/rijndael-alg-fst.c
===================================================================
--- trunk/src/rijndael-alg-fst.c	(revision 290)
+++ trunk/src/rijndael-alg-fst.c	(revision 291)
@@ -15,4 +15,5 @@
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
 
 #ifdef SH_ENCRYPT
@@ -29,15 +30,17 @@
 	word8 tk[MAXKC][4];
 	int KC = ROUNDS - 6;
+	word32 tmp;
 
 	for (j = KC-1; j >= 0; j--) {
-		*((word32*)tk[j]) = *((word32*)k[j]);
+	  memmove( &(tk[j]), &(k[j]), sizeof(word32));
 	}
 	r = 0;
 	t = 0;
+
 	/* copy values into round key array */
 	for (j = 0; (j < KC) && (r < ROUNDS + 1); ) {
 		for (; (j < KC) && (t < 4); j++, t++) {
-			*((word32*)W[r][t]) = *((word32*)tk[j]);
-		}
+		  memmove( &(W[r][t]), &(tk[j]), sizeof(word32));
+ 		}
 		if (t == 4) {
 			r++;
@@ -56,9 +59,11 @@
 		if (KC != 8) {
 			for (j = 1; j < KC; j++) {
-				*((word32*)tk[j]) ^= *((word32*)tk[j-1]);
+			  tmp = *((word32*)tk[j-1]);
+			  *((word32*)tk[j]) ^= tmp;
 			}
 		} else {
 			for (j = 1; j < KC/2; j++) {
-				*((word32*)tk[j]) ^= *((word32*)tk[j-1]);
+			  tmp = *((word32*)tk[j-1]);
+			  *((word32*)tk[j]) ^= tmp;
 			}
 			tk[KC/2][0] ^= S[tk[KC/2 - 1][0]];
@@ -67,5 +72,6 @@
 			tk[KC/2][3] ^= S[tk[KC/2 - 1][3]];
 			for (j = KC/2 + 1; j < KC; j++) {
-				*((word32*)tk[j]) ^= *((word32*)tk[j-1]);
+			        tmp = *((word32*)tk[j-1]);
+				*((word32*)tk[j]) ^= tmp;
 			}
 		}
@@ -73,5 +79,5 @@
 		for (j = 0; (j < KC) && (r < ROUNDS + 1); ) {
 			for (; (j < KC) && (t < 4); j++, t++) {
-				*((word32*)W[r][t]) = *((word32*)tk[j]);
+			  memmove( &(W[r][t]), &(tk[j]), sizeof(word32));
 			}
 			if (t == 4) {
