commit - 1e9e16fa3b436c974915833ef71748fbcd9dd658
commit + 2e794a6943a74f2ba4f3769703e3500fe9008461
blob - 5b83df83f645c7b0cfa9bf7490c98eeb45fc61ef
blob + 57f3e65ff840fcf6fe7d49df9a6599358183dd1d
--- ChangeLog
+++ ChangeLog
ngIRCd CVSHEAD
+ - Reverse DNS lookup code now checks the result by doing an additional lookup.
- Add new IO Layer
ngIRCd 0.9.x
--
-$Id: ChangeLog,v 1.279 2005/07/07 18:50:23 fw Exp $
+$Id: ChangeLog,v 1.280 2005/07/25 09:20:10 fw Exp $
blob - 5529f168f9aca38cad5eb06a89d3eb429e28a2cf
blob + 8e1749a30eaa574e76dfaed2c3e9679ea47fa701
--- src/ngircd/resolve.c
+++ src/ngircd/resolve.c
#include "portab.h"
-static char UNUSED id[] = "$Id: resolve.c,v 1.14 2005/07/24 21:42:00 fw Exp $";
+static char UNUSED id[] = "$Id: resolve.c,v 1.15 2005/07/25 09:20:10 fw Exp $";
#include "imp.h"
#include <assert.h>
struct hostent *h;
size_t len;
struct in_addr *addr;
+ char *ntoaptr;
#ifdef IDENTAUTH
char *res;
#endif
/* Resolve IP address */
+#ifdef DEBUG
Log_Resolver( LOG_DEBUG, "Now resolving %s ...", inet_ntoa( Addr->sin_addr ));
+#endif
h = gethostbyaddr( (char *)&Addr->sin_addr, sizeof( Addr->sin_addr ), AF_INET );
if (!h) {
#ifdef h_errno
if (memcmp(h->h_addr, &Addr->sin_addr, sizeof (struct in_addr))) {
addr = (struct in_addr*) h->h_addr;
strlcpy(ipstr, inet_ntoa(*addr), sizeof ipstr);
+ ntoaptr = inet_ntoa( Addr->sin_addr );
Log(LOG_WARNING,"Possible forgery: %s resolved to %s (which is at ip %s!)",
- inet_ntoa( Addr->sin_addr), hostname, ipstr);
- strlcpy( hostname, inet_ntoa( Addr->sin_addr ), sizeof( hostname ));
+ ntoaptr, hostname, ipstr);
+ strlcpy( hostname, ntoaptr, sizeof hostname);
}
} else {
+ ntoaptr = inet_ntoa( Addr->sin_addr );
Log(LOG_WARNING, "Possible forgery: %s resolved to %s (which has no ip address)",
- inet_ntoa( Addr->sin_addr ), hostname);
- strlcpy( hostname, inet_ntoa( Addr->sin_addr ), sizeof( hostname ));
+ ntoaptr, hostname);
+ strlcpy( hostname, ntoaptr, sizeof hostname);
}
}
Log_Resolver( LOG_DEBUG, "Ok, translated %s to \"%s\".", inet_ntoa( Addr->sin_addr ), hostname );