head 1.1; access; symbols pkgsrc-2026Q1:1.1.0.192 pkgsrc-2026Q1-base:1.1 pkgsrc-2025Q4:1.1.0.190 pkgsrc-2025Q4-base:1.1 pkgsrc-2025Q3:1.1.0.188 pkgsrc-2025Q3-base:1.1 pkgsrc-2025Q2:1.1.0.186 pkgsrc-2025Q2-base:1.1 pkgsrc-2025Q1:1.1.0.184 pkgsrc-2025Q1-base:1.1 pkgsrc-2024Q4:1.1.0.182 pkgsrc-2024Q4-base:1.1 pkgsrc-2024Q3:1.1.0.180 pkgsrc-2024Q3-base:1.1 pkgsrc-2024Q2:1.1.0.178 pkgsrc-2024Q2-base:1.1 pkgsrc-2024Q1:1.1.0.176 pkgsrc-2024Q1-base:1.1 pkgsrc-2023Q4:1.1.0.174 pkgsrc-2023Q4-base:1.1 pkgsrc-2023Q3:1.1.0.172 pkgsrc-2023Q3-base:1.1 pkgsrc-2023Q2:1.1.0.170 pkgsrc-2023Q2-base:1.1 pkgsrc-2023Q1:1.1.0.168 pkgsrc-2023Q1-base:1.1 pkgsrc-2022Q4:1.1.0.166 pkgsrc-2022Q4-base:1.1 pkgsrc-2022Q3:1.1.0.164 pkgsrc-2022Q3-base:1.1 pkgsrc-2022Q2:1.1.0.162 pkgsrc-2022Q2-base:1.1 pkgsrc-2022Q1:1.1.0.160 pkgsrc-2022Q1-base:1.1 pkgsrc-2021Q4:1.1.0.158 pkgsrc-2021Q4-base:1.1 pkgsrc-2021Q3:1.1.0.156 pkgsrc-2021Q3-base:1.1 pkgsrc-2021Q2:1.1.0.154 pkgsrc-2021Q2-base:1.1 pkgsrc-2021Q1:1.1.0.152 pkgsrc-2021Q1-base:1.1 pkgsrc-2020Q4:1.1.0.150 pkgsrc-2020Q4-base:1.1 pkgsrc-2020Q3:1.1.0.148 pkgsrc-2020Q3-base:1.1 pkgsrc-2020Q2:1.1.0.144 pkgsrc-2020Q2-base:1.1 pkgsrc-2020Q1:1.1.0.124 pkgsrc-2020Q1-base:1.1 pkgsrc-2019Q4:1.1.0.146 pkgsrc-2019Q4-base:1.1 pkgsrc-2019Q3:1.1.0.142 pkgsrc-2019Q3-base:1.1 pkgsrc-2019Q2:1.1.0.140 pkgsrc-2019Q2-base:1.1 pkgsrc-2019Q1:1.1.0.138 pkgsrc-2019Q1-base:1.1 pkgsrc-2018Q4:1.1.0.136 pkgsrc-2018Q4-base:1.1 pkgsrc-2018Q3:1.1.0.134 pkgsrc-2018Q3-base:1.1 pkgsrc-2018Q2:1.1.0.132 pkgsrc-2018Q2-base:1.1 pkgsrc-2018Q1:1.1.0.130 pkgsrc-2018Q1-base:1.1 pkgsrc-2017Q4:1.1.0.128 pkgsrc-2017Q4-base:1.1 pkgsrc-2017Q3:1.1.0.126 pkgsrc-2017Q3-base:1.1 pkgsrc-2017Q2:1.1.0.122 pkgsrc-2017Q2-base:1.1 pkgsrc-2017Q1:1.1.0.120 pkgsrc-2017Q1-base:1.1 pkgsrc-2016Q4:1.1.0.118 pkgsrc-2016Q4-base:1.1 pkgsrc-2016Q3:1.1.0.116 pkgsrc-2016Q3-base:1.1 pkgsrc-2016Q2:1.1.0.114 pkgsrc-2016Q2-base:1.1 pkgsrc-2016Q1:1.1.0.112 pkgsrc-2016Q1-base:1.1 pkgsrc-2015Q4:1.1.0.110 pkgsrc-2015Q4-base:1.1 pkgsrc-2015Q3:1.1.0.108 pkgsrc-2015Q3-base:1.1 pkgsrc-2015Q2:1.1.0.106 pkgsrc-2015Q2-base:1.1 pkgsrc-2015Q1:1.1.0.104 pkgsrc-2015Q1-base:1.1 pkgsrc-2014Q4:1.1.0.102 pkgsrc-2014Q4-base:1.1 pkgsrc-2014Q3:1.1.0.100 pkgsrc-2014Q3-base:1.1 pkgsrc-2014Q2:1.1.0.98 pkgsrc-2014Q2-base:1.1 pkgsrc-2014Q1:1.1.0.96 pkgsrc-2014Q1-base:1.1 pkgsrc-2013Q4:1.1.0.94 pkgsrc-2013Q4-base:1.1 pkgsrc-2013Q3:1.1.0.92 pkgsrc-2013Q3-base:1.1 pkgsrc-2013Q2:1.1.0.90 pkgsrc-2013Q2-base:1.1 pkgsrc-2013Q1:1.1.0.88 pkgsrc-2013Q1-base:1.1 pkgsrc-2012Q4:1.1.0.86 pkgsrc-2012Q4-base:1.1 pkgsrc-2012Q3:1.1.0.84 pkgsrc-2012Q3-base:1.1 pkgsrc-2012Q2:1.1.0.82 pkgsrc-2012Q2-base:1.1 pkgsrc-2012Q1:1.1.0.80 pkgsrc-2012Q1-base:1.1 pkgsrc-2011Q4:1.1.0.78 pkgsrc-2011Q4-base:1.1 pkgsrc-2011Q3:1.1.0.76 pkgsrc-2011Q3-base:1.1 pkgsrc-2011Q2:1.1.0.74 pkgsrc-2011Q2-base:1.1 pkgsrc-2011Q1:1.1.0.72 pkgsrc-2011Q1-base:1.1 pkgsrc-2010Q4:1.1.0.70 pkgsrc-2010Q4-base:1.1 pkgsrc-2010Q3:1.1.0.68 pkgsrc-2010Q3-base:1.1 pkgsrc-2010Q2:1.1.0.66 pkgsrc-2010Q2-base:1.1 pkgsrc-2010Q1:1.1.0.64 pkgsrc-2010Q1-base:1.1 pkgsrc-2009Q4:1.1.0.62 pkgsrc-2009Q4-base:1.1 pkgsrc-2009Q3:1.1.0.60 pkgsrc-2009Q3-base:1.1 pkgsrc-2009Q2:1.1.0.58 pkgsrc-2009Q2-base:1.1 pkgsrc-2009Q1:1.1.0.56 pkgsrc-2009Q1-base:1.1 pkgsrc-2008Q4:1.1.0.54 pkgsrc-2008Q4-base:1.1 pkgsrc-2008Q3:1.1.0.52 pkgsrc-2008Q3-base:1.1 cube-native-xorg:1.1.0.50 cube-native-xorg-base:1.1 pkgsrc-2008Q2:1.1.0.48 pkgsrc-2008Q2-base:1.1 cwrapper:1.1.0.46 pkgsrc-2008Q1:1.1.0.44 pkgsrc-2008Q1-base:1.1 pkgsrc-2007Q4:1.1.0.42 pkgsrc-2007Q4-base:1.1 pkgsrc-2007Q3:1.1.0.40 pkgsrc-2007Q3-base:1.1 pkgsrc-2007Q2:1.1.0.38 pkgsrc-2007Q2-base:1.1 pkgsrc-2007Q1:1.1.0.36 pkgsrc-2007Q1-base:1.1 pkgsrc-2006Q4:1.1.0.34 pkgsrc-2006Q4-base:1.1 pkgsrc-2006Q3:1.1.0.32 pkgsrc-2006Q3-base:1.1 pkgsrc-2006Q2:1.1.0.30 pkgsrc-2006Q2-base:1.1 pkgsrc-2006Q1:1.1.0.28 pkgsrc-2006Q1-base:1.1 pkgsrc-2005Q4:1.1.0.26 pkgsrc-2005Q4-base:1.1 pkgsrc-2005Q3:1.1.0.24 pkgsrc-2005Q3-base:1.1 pkgsrc-2005Q2:1.1.0.22 pkgsrc-2005Q2-base:1.1 pkgsrc-2005Q1:1.1.0.20 pkgsrc-2005Q1-base:1.1 pkgsrc-2004Q4:1.1.0.18 pkgsrc-2004Q4-base:1.1 pkgsrc-2004Q3:1.1.0.16 pkgsrc-2004Q3-base:1.1 pkgsrc-2004Q2:1.1.0.14 pkgsrc-2004Q2-base:1.1 pkgsrc-2004Q1:1.1.0.12 pkgsrc-2004Q1-base:1.1 pkgsrc-2003Q4:1.1.0.10 pkgsrc-2003Q4-base:1.1 netbsd-1-6-1:1.1.0.6 netbsd-1-6-1-base:1.1 netbsd-1-6:1.1.0.8 netbsd-1-6-RELEASE-base:1.1 pkgviews:1.1.0.4 pkgviews-base:1.1 buildlink2:1.1.0.2 buildlink2-base:1.1 netbsd-1-5-PATCH003:1.1 netbsd-1-5-PATCH001:1.1 netbsd-1-5-RELEASE:1.1 netbsd-1-4-PATCH003:1.1 netbsd-1-4-PATCH002:1.1 comdex-fall-1999:1.1 netbsd-1-4-PATCH001:1.1 netbsd-1-4-RELEASE:1.1; locks; strict; comment @# @; 1.1 date 99.01.05.14.31.01; author frueauf; state Exp; branches; next ; desc @@ 1.1 log @Add patch that fixes bus error caused by alignment failures on NetBSD/Sparc. Provided by Julian Coleman . @ text @$NetBSD$ From Julian Coleman posted to netbsd-bugs@@netbsd.org: The memory alignment strategy for PGP 5.0i causes bus errors on NetBSD/Sparc because 8 byte variables are not aligned on an 8 byte boundary. In src/lib/pgp/helper/pgpMem.c:PGP_INTERNAL_ALLOC(), a header is added to all malloc()'ed memory and the pointer returned is incremented by the size of the header. However, there are no constraints to see if this increment is correctly aligned. The problem might also occur on other OS's running on the Sparc. A patch is appended (based on one used for the Chimera web browser). J PS. The exact problem is that 'off_t' is an 8 byte value, but the header length is only a mulitple of 4. Pgpe crashes at pgpFileMod.c:333, when it tries to modify 'context->filesize'. PPS. Maybe 'long long' should also be in the union (e.g. for Solaris 2). --- lib/pgp/helper/pgpMem.c.orig Mon Aug 11 02:05:32 1997 +++ lib/pgp/helper/pgpMem.c Tue Jan 5 15:03:27 1999 @@@@ -19,6 +19,20 @@@@ #include "pgpDebug.h" #include "pgpLeaks.h" +/* + * Make sure any memory chunks are correctly aligned. + * This can be forced by defining ALIGNSIZE (in bytes). + */ +#ifndef ALIGNSIZE +typedef struct Alignment +{ + union { int a; char *b; size_t c; off_t d; long e; } Align; +} Alignment; +#define MEMALIGN(x) ((x / sizeof(Alignment) + 1) * sizeof(Alignment)) +#else +#define MEMALIGN(x) ((x / ALIGNSIZE + 1) * ALIGNSIZE) +#endif + /* Fills allocated/deallocated memory with 0xDD's */ #ifndef DEBUG_FILL_MEM #define DEBUG_FILL_MEM DEBUG @@@@ -69,11 +83,11 @@@@ }; #define UserPtrToMemHeader(userPtr) \ - ((MemHeader *)((char *)(userPtr) - sizeof(MemHeader))) + ((MemHeader *)((char *)(userPtr) - MEMALIGN(sizeof(MemHeader)))) #define MemHeaderToUserPtr(hdrPtr) \ - ((void *)((char *)(hdrPtr) + sizeof(MemHeader))) + ((void *)((char *)(hdrPtr) + MEMALIGN(sizeof(MemHeader)))) #define FullBlockSize(userSize) \ - (sizeof(MemHeader) + (userSize) + DEBUG_MEM_TAIL_MAGIC) + (MEMALIGN(sizeof(MemHeader)) + (userSize) + DEBUG_MEM_TAIL_MAGIC) /* * Defines the sequence of tail magic bytes. We want every byte to be @@@@ -269,7 +283,7 @@@@ MemHeader * header) { #if DEBUG_MEM_TAIL_MAGIC - char * tailMagic = (char *)header + sizeof(MemHeader) + header->size; + char * tailMagic = (char *)header + MEMALIGN(sizeof(MemHeader)) + header->size; int i; for (i = 0; i < DEBUG_MEM_TAIL_MAGIC; i++) @@@@ -287,8 +301,9 @@@@ MemHeader * header; void * userPtr; + size += (MEMALIGN(sizeof(MemHeader)) - (sizeof(MemHeader))); header = (MemHeader *)pgpPlatformAlloc(FullBlockSize(size)); -if (header == NULL) + if (header == NULL) return NULL; MaybeFillMem(header, FullBlockSize(size)); @@@@ -352,7 +367,7 @@@@ if (newHeader == NULL) return PGPERR_NOMEM; pgpCopyMemory((void *)oldHeader, (void *)newHeader, - sizeof(MemHeader) + oldSize); + MEMALIGN(sizeof(MemHeader)) + oldSize); MaybeFillMem(oldHeader, FullBlockSize(oldSize)); pgpPlatformFree(oldHeader); } @