svn commit: lorikeet r630 - in trunk/heimdal/lib/asn1: .

lha at samba.org lha at samba.org
Sat Oct 21 14:23:27 GMT 2006


Author: lha
Date: 2006-10-21 14:23:27 +0000 (Sat, 21 Oct 2006)
New Revision: 630

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=lorikeet&rev=630

Log:
Try to align data, IA64s gets upset if its unaligned
Modified:
   trunk/heimdal/lib/asn1/check-common.c


Changeset:
Modified: trunk/heimdal/lib/asn1/check-common.c
===================================================================
--- trunk/heimdal/lib/asn1/check-common.c	2006-10-21 14:11:06 UTC (rev 629)
+++ trunk/heimdal/lib/asn1/check-common.c	2006-10-21 14:23:27 UTC (rev 630)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999 - 2005 Kungliga Tekniska Högskolan
+ * Copyright (c) 1999 - 2006 Kungliga Tekniska Högskolan
  * (Royal Institute of Technology, Stockholm, Sweden). 
  * All rights reserved. 
  *
@@ -44,7 +44,7 @@
 
 #include "check-common.h"
 
-RCSID("$Id: check-common.c,v 1.4 2005/09/13 19:40:30 lha Exp $");
+RCSID("$Id: check-common.c,v 1.5 2006/10/21 14:22:04 lha Exp $");
 
 struct map_page {
     void *start;
@@ -62,16 +62,20 @@
 {
 #ifndef HAVE_MMAP
     unsigned char *p;
+    size_t len = size + sizeof(long) * 2;
+    int i;
     
     *map = ecalloc(1, sizeof(**map));
 
-    p = emalloc(size + 2);
+    p = emalloc(len);
     (*map)->type = type;
     (*map)->start = p;
-    (*map)->size = size + 2;
-    p[0] = 0xff;
-    p[(*map)->size] = 0xff;
-    (*map)->data_start = p + 1;
+    (*map)->size = len;
+    (*map)->data_start = p + sizeof(long);
+    for (i = sizeof(long); i > 0; i--)
+	p[sizeof(long) - i] = 0xff - i;
+    for (i = sizeof(long); i > 0; i--)
+	p[len - i] = 0xff - i;
 #else
     unsigned char *p;
     int flags, ret, fd;
@@ -131,11 +135,14 @@
 {
 #ifndef HAVE_MMAP
     unsigned char *p = map->start;
+    int i;
     
-    if (p[0] != 0xff)
-	errx(1, "%s: %s underrun %x\n", test_name, map_name, p[0]);
-    if (p[map->size] != 0xff)
-	errx(1, "%s: %s overrun %x\n", test_name, map_name, p[map->size - 1]);
+    for (i = sizeof(long); i > 0; i--)
+	if (p[sizeof(long) - i] != 0xff - i)
+	    errx(1, "%s: %s underrun %d\n", test_name, map_name, i);
+    for (i = sizeof(long); i > 0; i--)
+	if (p[map->size - i] != 0xff - i)
+	    errx(1, "%s: %s overrun %x\n", test_name, map_name, map->size - i);
     free(map->start);
 #else
     int ret;



More information about the samba-cvs mailing list