From d2f0cd06862ed942306c642d92a13a142ad8dbf7 Mon Sep 17 00:00:00 2001 From: Matias Fontanini Date: Wed, 20 Aug 2014 22:44:03 -0300 Subject: [PATCH] Fixed issue #29: Added empty name check on DNS::encode_domain_name. --- src/dns.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/dns.cpp b/src/dns.cpp index 98d2bfa..6d950a2 100644 --- a/src/dns.cpp +++ b/src/dns.cpp @@ -295,13 +295,15 @@ void DNS::add_additional(const Resource &resource){ std::string DNS::encode_domain_name(const std::string &dn) { std::string output; size_t last_index(0), index; - while((index = dn.find('.', last_index+1)) != string::npos) { - output.push_back(index - last_index); - output.append(dn.begin() + last_index, dn.begin() + index); - last_index = index + 1; //skip dot + if(!dn.empty()) { + while((index = dn.find('.', last_index+1)) != string::npos) { + output.push_back(index - last_index); + output.append(dn.begin() + last_index, dn.begin() + index); + last_index = index + 1; //skip dot + } + output.push_back(dn.size() - last_index); + output.append(dn.begin() + last_index, dn.end()); } - output.push_back(dn.size() - last_index); - output.append(dn.begin() + last_index, dn.end()); output.push_back('\0'); return output; }