- 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
|