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