[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Cvs-cvs] Changes to ccvs/src/server.c
From: |
Brian Murphy |
Subject: |
[Cvs-cvs] Changes to ccvs/src/server.c |
Date: |
Sun, 16 Oct 2005 14:17:08 -0400 |
Index: ccvs/src/server.c
diff -u ccvs/src/server.c:1.450 ccvs/src/server.c:1.451
--- ccvs/src/server.c:1.450 Mon Oct 3 19:33:45 2005
+++ ccvs/src/server.c Sun Oct 16 18:17:07 2005
@@ -109,6 +109,7 @@
# endif /* AUTH_SERVER_SUPPORT */
# ifdef HAVE_PAM
+# include <netdb.h> /* getnameinfo */
# if defined(HAVE_SECURITY_PAM_APPL_H)
# include <security/pam_appl.h>
# elif defined(HAVE_PAM_PAM_APPL_H)
@@ -6891,6 +6892,27 @@
int retval, err;
struct pam_conv conv = { cvs_pam_conv, 0 };
char *pam_stage = "start";
+ struct sockaddr peer;
+ int len;
+ char host[NI_MAXHOST];
+
+ /* get the client's ip address */
+ len = sizeof (peer);
+ if (getpeername (STDIN_FILENO, &peer, &len) < 0)
+ {
+ printf ("E Fatal error, aborting.\n\
+error %s getpeername failed\n", strerror (errno));
+ exit (EXIT_FAILURE);
+ }
+
+ /* convert the ip address to text */
+ if (getnameinfo(&peer, len, host, NI_MAXHOST,
+ NULL, 0, NI_NUMERICHOST) < 0)
+ {
+ printf ("E Fatal error, aborting.\n\
+error %s getnameinfo failed\n", strerror (errno));
+ exit (EXIT_FAILURE);
+ }
pam_username = *username;
pam_password = password;
@@ -6902,6 +6924,12 @@
{
pam_stage = "set dummy tty";
retval = pam_set_item (pamh, PAM_TTY, PAM_SERVICE_NAME);
+ }
+
+ if (retval == PAM_SUCCESS)
+ {
+ pam_stage = "set remote host ip";
+ retval = pam_set_item (pamh, PAM_RHOST, host);
}
if (retval == PAM_SUCCESS)