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