e89e5bd
--- vsftpd-2.0.3/sysdeputil.c.old	2004-09-14 03:18:54.000000000 +0200
e89e5bd
+++ vsftpd-2.0.3/sysdeputil.c	2005-09-09 12:09:10.000000000 +0200
e89e5bd
@@ -16,6 +17,9 @@
e89e5bd
 #include "tunables.h"
e89e5bd
 #include "builddefs.h"
e89e5bd
 
e89e5bd
+/* For gethostbyaddr, inet_addr */
e89e5bd
+#include <netdb.h>
e89e5bd
+
e89e5bd
 /* For Linux, this adds nothing :-) */
e89e5bd
 #include "port/porting_junk.h"
e89e5bd
 
e89e5bd
@@ -284,6 +288,10 @@
e89e5bd
                       const struct mystr* p_remote_host)
e89e5bd
 {
e89e5bd
   int retval;
e89e5bd
+#ifdef PAM_RHOST
e89e5bd
+  struct sockaddr_in sin;
e89e5bd
+  struct hostent *host;
e89e5bd
+#endif
e89e5bd
   struct pam_conv the_conv =
e89e5bd
   {
e89e5bd
     &pam_conv_func,
e89e5bd
@@ -302,7 +310,12 @@
e89e5bd
     return 0;
e89e5bd
   }
e89e5bd
 #ifdef PAM_RHOST
e89e5bd
-  retval = pam_set_item(s_pamh, PAM_RHOST, str_getbuf(p_remote_host));
e89e5bd
+  sin.sin_addr.s_addr = inet_addr(str_getbuf(p_remote_host));
e89e5bd
+  host = gethostbyaddr((char*)&sin.sin_addr.s_addr,sizeof(struct in_addr),AF_INET);
e89e5bd
+  if (host != (struct hostent*)0)
e89e5bd
+    retval = pam_set_item(s_pamh, PAM_RHOST, host->h_name);
e89e5bd
+  else
e89e5bd
+    retval = pam_set_item(s_pamh, PAM_RHOST, str_getbuf(p_remote_host));
e89e5bd
   if (retval != PAM_SUCCESS)
e89e5bd
   {
e89e5bd
     (void) pam_end(s_pamh, 0);