From 0c3742099d6f94a8928ac5e6eca11f8d3f4cb3ad Mon Sep 17 00:00:00 2001
From: Peter van Dijk <peter.van.dijk@netherlabs.nl>
Date: Tue, 22 Oct 2013 23:26:13 +0200
Subject: [PATCH] fix base64 decoding for big endian archs on which long is not
 32 bits (like s390x)

---
 pdns/base64.cc | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/pdns/base64.cc b/pdns/base64.cc
index ab10c7e..f7f0422 100644
--- a/pdns/base64.cc
+++ b/pdns/base64.cc
@@ -165,9 +165,9 @@ int B64Decode(const std::string& strInput, std::string& strOutput)
     // may have been padding, so those padded bytes
     // are actually ignored.
 #if BYTE_ORDER == BIG_ENDIAN
-    strOutput += pBuf[1];
-    strOutput += pBuf[2];
-    strOutput += pBuf[3];
+    strOutput += pBuf[sizeof(long)-3];
+    strOutput += pBuf[sizeof(long)-2];
+    strOutput += pBuf[sizeof(long)-1];
 #else
     strOutput += pBuf[2];
     strOutput += pBuf[1];
-- 
1.8.5.1

From 916a0fda31405290cedac058aab7f5d9f9c26a7b Mon Sep 17 00:00:00 2001
From: Peter van Dijk <peter.van.dijk@netherlabs.nl>
Date: Thu, 24 Oct 2013 20:26:48 +0200
Subject: [PATCH] force ragel alphtype to unsigned char, fixing non-ASCII TXT
 parsing on signed char platforms like s390x

---
 pdns/dnslabeltext.rl | 1 +
 1 file changed, 1 insertion(+)

diff --git a/pdns/dnslabeltext.rl b/pdns/dnslabeltext.rl
index aad3530..58cdb91 100644
--- a/pdns/dnslabeltext.rl
+++ b/pdns/dnslabeltext.rl
@@ -22,6 +22,7 @@ vector<string> segmentDNSText(const string& input )
 %%{
         machine dnstext;
         write data;
+        alphtype unsigned char;
 }%%
 	(void)dnstext_error;  // silence warnings
 	(void)dnstext_en_main;
-- 
1.8.5.1

