diff --git a/nmap_dns.cc b/nmap_dns.cc index bd1abecff..ab636454b 100644 --- a/nmap_dns.cc +++ b/nmap_dns.cc @@ -1823,8 +1823,10 @@ size_t DNS::Packet::parseFromBuffer(const u8 *buf, size_t maxlen) return ret; } -const char *DNS::Request::repr() +const char *DNS::Request::repr() const { +#define REPR_BUFSIZE (FQDN_LEN + 16) + static char buf[REPR_BUFSIZE] = "\0"; switch(type) { case DNS::NONE: return "Uninitialized request"; @@ -1832,7 +1834,7 @@ const char *DNS::Request::repr() case DNS::A: case DNS::AAAA: case DNS::ANY: - return name.c_str(); + Snprintf(buf, REPR_BUFSIZE, "%s/%d", name.c_str(), type); break; case DNS::PTR: if (ssv.size() > 0) { @@ -1843,7 +1845,8 @@ const char *DNS::Request::repr() } break; default: - return "Invalid request"; + Snprintf(buf, REPR_BUFSIZE, "Invalid request: %d", type); break; } + return buf; } diff --git a/nmap_dns.h b/nmap_dns.h index 1933927f6..495668875 100644 --- a/nmap_dns.h +++ b/nmap_dns.h @@ -256,7 +256,7 @@ struct Request std::string name; void *userdata; Request() : type(NONE), ssv(), name(), userdata(NULL) {} - const char *repr(); // string representation + const char *repr() const; // string representation }; }