NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
bin/54594: bind may crash at startup
>Number: 54594
>Category: bin
>Synopsis: bind may crash at startup
>Confidential: no
>Severity: serious
>Priority: high
>Responsible: bin-bug-people
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Wed Oct 02 15:10:00 +0000 2019
>Originator: Martin Husemann
>Release: NetBSD 9.99.15
>Organization:
The NetBSD Foundation, Inc.
>Environment:
System: NetBSD unpluged.duskware.de 9.99.15 NetBSD 9.99.15 (UNPLUGED) #266: Wed Oct 2 12:14:19 CEST 2019 martin%seven-days-to-the-wolves.aprisoft.de@localhost:/work/src/sys/arch/evbarm/compile/UNPLUGED evbarm
Architecture: earm
Machine: evbarm
>Description:
On alignement critical architectures, bind may crash at startup when it
initializes its internal keys.
In dist/lib/isc/hash.c:39 there is a global storage for a key:
static uint8_t isc_hash_key[16];
which is initialized in line 141:
isc_siphash24(isc_hash_key, input, length, (uint8_t *)&hval);
but isc_siphash24 expects the key to be properly aligned for a 64bit
value:
void
isc_siphash24(const uint8_t *k, const uint8_t *in, size_t inlen, uint8_t *out)
{
const uint64_t *key = (const uint64_t *)k;
And depending on how linking ends up for that byte array, we loose or win.
Example crash:
Core was generated by `named'.
Program terminated with signal SIGBUS, Bus error.
#0 isc_siphash24 (
k=0xbbbc71f4 "\365q\036\362\255\214tLC\226XxO\230\346\251\001",
in=in@entry=0xbfffd6e0 "", inlen=inlen@entry=1,
out=out@entry=0xbfffd6d8 "")
(gdb) up
#1 0xbbba0ad4 in isc_hash_function (data=0xbb2579f8, length=1,
case_sensitive=<optimized out>)
at /work/src/external/mpl/bind/lib/libisc/../../dist/lib/isc/hash.c:141
141 /work/src/external/mpl/bind/lib/libisc/../../dist/lib/isc/hash.c: No such file or directory.
>How-To-Repeat:
n/a
>Fix:
Add alignment attributes to the isc_hash_key? Make it a union with uint64_t?
Home |
Main Index |
Thread Index |
Old Index