diff --git a/src/domain.c b/src/domain.c index ce4929b..4814435 100644 --- a/src/domain.c +++ b/src/domain.c @@ -175,8 +175,8 @@ int is_rev_synth(int flag, union all_addr *addr, char *name) *p = '-'; } - strncat(name, ".", MAXDNAME); - strncat(name, c->domain, MAXDNAME); + strncat(name, ".", MAXDNAME - strlen(name) - 1); + strncat(name, c->domain, MAXDNAME - strlen(name) - 1); return 1; } @@ -201,16 +201,16 @@ int is_rev_synth(int flag, union all_addr *addr, char *name) for (i = 0; i < 16; i += 2) { sprintf(frag, "%s%02x%02x", i == 0 ? "" : "-", addr->addr6.s6_addr[i], addr->addr6.s6_addr[i+1]); - strncat(name, frag, MAXDNAME); + strncat(name, frag, MAXDNAME - strlen(name) - 1); } } - strncat(name, ".", MAXDNAME); - strncat(name, c->domain, MAXDNAME); - + strncat(name, ".", MAXDNAME - strlen(name) - 1); + strncat(name, c->domain, MAXDNAME - strlen(name) - 1); + return 1; } - + return 0; }