iodine: workaround incomplete musl nameser.h header
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 This should solve iodine packet corruption on little endian musl systems reported at http://lists.infradead.org/pipermail/lede-dev/2017-November/010085.html Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
parent
70858690c0
commit
175cf9e985
2 changed files with 28 additions and 1 deletions
|
@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=iodine
|
PKG_NAME:=iodine
|
||||||
PKG_VERSION:=0.7.0
|
PKG_VERSION:=0.7.0
|
||||||
PKG_RELEASE:=2
|
PKG_RELEASE:=3
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:=http://code.kryo.se/iodine/
|
PKG_SOURCE_URL:=http://code.kryo.se/iodine/
|
||||||
|
|
|
@ -0,0 +1,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
|
Loading…
Reference in a new issue