X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=src%2Fidnlookup.c;h=0fd367fb37482ef206dba81c82be44fd6ecbd3a1;hb=9533e44b92c3e098e640d1dabd44b3c58741dea1;hp=bab502da024acfe27823a30b5a0e3db229dc0aec;hpb=2269406c64770520d8c504f925af30eebe60d5aa;p=icmp-dn.git diff --git a/src/idnlookup.c b/src/idnlookup.c index bab502d..0fd367f 100644 --- a/src/idnlookup.c +++ b/src/idnlookup.c @@ -31,7 +31,9 @@ #include #include #include +#ifdef HAVE_CONFIG_H #include "config.h" +#endif struct icmphdr { u_int8_t type; @@ -76,6 +78,10 @@ void printdn(FILE *f, unsigned char *dnbuf, size_t size, int onlyfirst) fprintf(stderr, "domain name decompression not implemented, aborting\n"); exit(1); } + if((int)*p + (p - dnbuf) >= size) { + fprintf(stderr, "malformed domain name\n"); + return; + } fprintf(f, "%.*s", (int)*p, p + 1); p += 1 + (int)*p; if(*p != 0) @@ -277,6 +283,6 @@ int main(int argc, char **argv) /* * Local Variables: - * compile-command: "gcc -Wall -g -o idnlookup idnlookup.c" + * compile-command: "make CFLAGS='-Wall -g'" * End: */