blob: 1f075d099de957e4891a077b2ee368471b9c1067 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
The arpa/nameser.h header of musl libc indirectly depends on the endian.h
header but fails to explicitely include it to properly define
`__BYTE_ORDER` and `__BIG_ENDIAN` prior to declaring the DNS `HEADER`
structure.
When both the appropriate `__BYTE_ORDER` and `__BIG_ENDIAN` defines are
unset, the `#if __BYTE_ORDER == __BIG_ENDIAN` condition in `nameser.h`
evaluates to true, causing it to declare a bad (big endian) DNS packet
header structure on little endian systems.
Work around this musl bug by forcibly passing `-include endian.h` through
the `osflags` file.
An upstream fix for musl libc has been submitted with
http://www.openwall.com/lists/musl/2017/12/04/3
--- a/src/osflags
+++ b/src/osflags
@@ -27,7 +27,7 @@ cflags)
echo '-Dsocklen_t=int';
;;
Linux)
- FLAGS="-D_GNU_SOURCE"
+ FLAGS="-D_GNU_SOURCE -include endian.h"
echo $FLAGS;
;;
esac
|