From bb683c9f79ce00af5084001b13ff397c88e7a9e0 Mon Sep 17 00:00:00 2001 From: Matias Fontanini Date: Thu, 2 Apr 2015 22:43:35 -0700 Subject: [PATCH] Fix invalid DNS IPv4 address parsing on big endian arch. --- src/dns.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/dns.cpp b/src/dns.cpp index 5e014c1..ece6e6c 100644 --- a/src/dns.cpp +++ b/src/dns.cpp @@ -38,6 +38,7 @@ #include "ipv6_address.h" #include "exceptions.h" #include "rawpdu.h" +#include "endianness.h" using std::string; using std::list; @@ -373,10 +374,17 @@ void DNS::inline_convert_v4(uint32_t value, char *output) { output += sprintf( output, "%d.%d.%d.%d", + #if TINS_IS_LITTLE_ENDIAN value & 0xff, (value >> 8) & 0xff, (value >> 16) & 0xff, (value >> 24) & 0xff + #else + (value >> 24) & 0xff, + (value >> 16) & 0xff, + (value >> 8) & 0xff, + value & 0xff + #endif // TINS_IS_LITTLE_ENDIAN ); *output = 0; }