struct hostent *forward = NULL;
char *tmpname;
+ *hpp = hostent_dup (*hpp);
tmpname = xstrdup((*hpp)->h_name);
if (tmpname) {
forward = gethostbyname(tmpname);
if (!*sp) {
/* it was a FAKE */
*error = faked_hostent;
- *hpp = hostent_dup (*hpp);
return NULL;
}
+ free (*hpp);
*hpp = hostent_dup (forward);
}
else {
/* never heard of it. misconfigured DNS? */
*error = no_forward_dns;
- *hpp = hostent_dup (*hpp);
return NULL;
}
}
struct in_addr addr = caller->sin_addr;
enum auth_error error;
- if (path [0] != '/') return exp;
+ if (path [0] != '/') {
+ xlog(L_WARNING, "bad path in %s request from %s: \"%s\"",
+ what, inet_ntoa(addr), path);
+ return exp;
+ }
strncpy(epath, path, sizeof (epath) - 1);
epath[sizeof (epath) - 1] = '\0';