From 81842686f9c03ebc24d9b37e6db8f14197f9554e Mon Sep 17 00:00:00 2001 From: gibbs Date: Wed, 2 Aug 1995 18:31:08 +0000 Subject: Make kadmind safe to run on multi-homed machines. Reviewed by: Garrett A. Wollman (wollman@FreeBSD.org) --- eBones/kadmind/admin_server.c | 10 ++++++++++ eBones/kadmind/kadm_ser_wrap.c | 3 +-- eBones/usr.sbin/kadmin/admin_server.c | 10 ++++++++++ eBones/usr.sbin/kadmin/kadm_ser_wrap.c | 3 +-- eBones/usr.sbin/kadmind/admin_server.c | 10 ++++++++++ eBones/usr.sbin/kadmind/kadm_ser_wrap.c | 3 +-- 6 files changed, 33 insertions(+), 6 deletions(-) (limited to 'eBones') diff --git a/eBones/kadmind/admin_server.c b/eBones/kadmind/admin_server.c index 7f04ff2..ce36eb6 100644 --- a/eBones/kadmind/admin_server.c +++ b/eBones/kadmind/admin_server.c @@ -226,6 +226,16 @@ kadm_listen() log("accept: %s",error_message(errno)); continue; } + addrlen = sizeof(server_parm.admin_addr); + if (getsockname(peer_fd, (struct sockaddr *)&server_parm.admin_addr, + &addrlen)) { + log("getsockname: %s",error_message(errno)); + continue; + } +#ifdef DEBUG + printf("Connection recieved on %s\n", + inet_ntoa(server_parm.admin_addr.sin_addr)); +#endif /* DEBUG */ #ifndef DEBUG /* if you want a sep daemon for each server */ if (pid = fork()) { diff --git a/eBones/kadmind/kadm_ser_wrap.c b/eBones/kadmind/kadm_ser_wrap.c index 79196c6..23664d4 100644 --- a/eBones/kadmind/kadm_ser_wrap.c +++ b/eBones/kadmind/kadm_ser_wrap.c @@ -57,8 +57,7 @@ char realm[]; server_parm.admin_addr.sin_family = AF_INET; if ((hp = gethostbyname(hostname)) == NULL) return KADM_NO_HOSTNAME; - bcopy(hp->h_addr, (char *) &server_parm.admin_addr.sin_addr.s_addr, - hp->h_length); + server_parm.admin_addr.sin_addr.s_addr = INADDR_ANY; server_parm.admin_addr.sin_port = sep->s_port; /* setting up the database */ if (kdb_get_master_key((inter==1),server_parm.master_key, diff --git a/eBones/usr.sbin/kadmin/admin_server.c b/eBones/usr.sbin/kadmin/admin_server.c index 7f04ff2..ce36eb6 100644 --- a/eBones/usr.sbin/kadmin/admin_server.c +++ b/eBones/usr.sbin/kadmin/admin_server.c @@ -226,6 +226,16 @@ kadm_listen() log("accept: %s",error_message(errno)); continue; } + addrlen = sizeof(server_parm.admin_addr); + if (getsockname(peer_fd, (struct sockaddr *)&server_parm.admin_addr, + &addrlen)) { + log("getsockname: %s",error_message(errno)); + continue; + } +#ifdef DEBUG + printf("Connection recieved on %s\n", + inet_ntoa(server_parm.admin_addr.sin_addr)); +#endif /* DEBUG */ #ifndef DEBUG /* if you want a sep daemon for each server */ if (pid = fork()) { diff --git a/eBones/usr.sbin/kadmin/kadm_ser_wrap.c b/eBones/usr.sbin/kadmin/kadm_ser_wrap.c index 79196c6..23664d4 100644 --- a/eBones/usr.sbin/kadmin/kadm_ser_wrap.c +++ b/eBones/usr.sbin/kadmin/kadm_ser_wrap.c @@ -57,8 +57,7 @@ char realm[]; server_parm.admin_addr.sin_family = AF_INET; if ((hp = gethostbyname(hostname)) == NULL) return KADM_NO_HOSTNAME; - bcopy(hp->h_addr, (char *) &server_parm.admin_addr.sin_addr.s_addr, - hp->h_length); + server_parm.admin_addr.sin_addr.s_addr = INADDR_ANY; server_parm.admin_addr.sin_port = sep->s_port; /* setting up the database */ if (kdb_get_master_key((inter==1),server_parm.master_key, diff --git a/eBones/usr.sbin/kadmind/admin_server.c b/eBones/usr.sbin/kadmind/admin_server.c index 7f04ff2..ce36eb6 100644 --- a/eBones/usr.sbin/kadmind/admin_server.c +++ b/eBones/usr.sbin/kadmind/admin_server.c @@ -226,6 +226,16 @@ kadm_listen() log("accept: %s",error_message(errno)); continue; } + addrlen = sizeof(server_parm.admin_addr); + if (getsockname(peer_fd, (struct sockaddr *)&server_parm.admin_addr, + &addrlen)) { + log("getsockname: %s",error_message(errno)); + continue; + } +#ifdef DEBUG + printf("Connection recieved on %s\n", + inet_ntoa(server_parm.admin_addr.sin_addr)); +#endif /* DEBUG */ #ifndef DEBUG /* if you want a sep daemon for each server */ if (pid = fork()) { diff --git a/eBones/usr.sbin/kadmind/kadm_ser_wrap.c b/eBones/usr.sbin/kadmind/kadm_ser_wrap.c index 79196c6..23664d4 100644 --- a/eBones/usr.sbin/kadmind/kadm_ser_wrap.c +++ b/eBones/usr.sbin/kadmind/kadm_ser_wrap.c @@ -57,8 +57,7 @@ char realm[]; server_parm.admin_addr.sin_family = AF_INET; if ((hp = gethostbyname(hostname)) == NULL) return KADM_NO_HOSTNAME; - bcopy(hp->h_addr, (char *) &server_parm.admin_addr.sin_addr.s_addr, - hp->h_length); + server_parm.admin_addr.sin_addr.s_addr = INADDR_ANY; server_parm.admin_addr.sin_port = sep->s_port; /* setting up the database */ if (kdb_get_master_key((inter==1),server_parm.master_key, -- cgit v1.1