[Pdns-dev] tabulator escaping

Michal Babuska michal at neotronic.org
Wed May 21 14:10:46 CEST 2014


i think I've found a bug in latest pdns from git. 

I use pdns as a slave to a bind9 server. I have several zones with txt records, which contain among other characters some tabulators. When pdns writes the zone on disc, all the tabs are replaced with string "\009". I believe this should not happen.

I've tracked the problem to pdns/dnsparser.cc in function static string txtEscape(const string &name) where the escaping happens.

I've solved it for my self this way:

diff --git a/pdns/dnsparser.cc b/pdns/dnsparser.cc
index b0030fd..a81182d 100644
--- a/pdns/dnsparser.cc
+++ b/pdns/dnsparser.cc
@@ -413,7 +413,7 @@ static string txtEscape(const string &name)
   char ebuf[5];
   for(string::const_iterator i=name.begin();i!=name.end();++i) {
-    if((unsigned char) *i > 127 || (unsigned char) *i < 32) {
+    if(((unsigned char) *i > 127 || (unsigned char) *i < 32) && (unsigned char) *i != 9) { // hey teacher, leave the tabs alone
       snprintf(ebuf, sizeof(ebuf), "\\%03u", (unsigned char)*i);
       ret += ebuf;

Michal Babuska

More information about the Pdns-dev mailing list