Репозитории ALT
S: | 0.17-alt5.1 |
4.1: | 0.17-alt2 |
4.0: | 0.17-ipl9mdk |
3.0: | 0.17-ipl9mdk |
Группа :: Сети/Удалённый доступ
Пакет: rsh
Главная Изменения Спек Патчи Sources Загрузить Gear Bugs and FR Repocop
Патч: netkit-rsh-0.17-nohostcheck.patch
Скачать
Скачать
Binary files netkit-rsh-0.17.orig/rlogind/.error.txt.swp and netkit-rsh-0.17.new/rlogind/.error.txt.swp differ
diff -uNr netkit-rsh-0.17.orig/rlogind/network.c netkit-rsh-0.17.new/rlogind/network.c
--- netkit-rsh-0.17.orig/rlogind/network.c Wed Oct 8 12:29:50 2003
+++ netkit-rsh-0.17.new/rlogind/network.c Wed Oct 8 13:44:42 2003
@@ -90,7 +90,7 @@
static char *
-find_hostname(const struct sockaddr_in *fromp, int *hostokp)
+find_hostname(const struct sockaddr_in *fromp, int no_host_check, int *hostokp)
{
struct hostent *hop;
char *hname;
@@ -102,7 +102,7 @@
hname = strdup(inet_ntoa(fromp->sin_addr));
hostok = 1;
}
- else if (check_all || local_domain(hop->h_name)) {
+ else if ((check_all || local_domain(hop->h_name )) && !no_host_check ) {
/*
* If name returned by gethostbyaddr is in our domain,
* attempt to verify that we haven't been fooled by someone
@@ -143,7 +143,7 @@
char *
-network_init(int f, int *hostokp)
+network_init(int f, int no_host_check, int *hostokp)
{
struct sockaddr_in from, *fromp;
socklen_t fromlen;
@@ -177,7 +177,7 @@
alarm(0);
- hname = find_hostname(fromp, hostokp);
+ hname = find_hostname(fromp,no_host_check, hostokp);
port = ntohs(fromp->sin_port);
if (fromp->sin_family != AF_INET ||
diff -uNr netkit-rsh-0.17.orig/rlogind/rlogind.c netkit-rsh-0.17.new/rlogind/rlogind.c
--- netkit-rsh-0.17.orig/rlogind/rlogind.c Wed Oct 8 12:29:50 2003
+++ netkit-rsh-0.17.new/rlogind/rlogind.c Wed Oct 8 12:58:51 2003
@@ -84,6 +84,7 @@
int use_rhosts = 1;
int allow_root_rhosts = 0;
int deny_all_rhosts_hequiv = 0;
+static int no_host_check = 0;
static char oobdata[] = {(char)TIOCPKT_WINDOW};
static char line[MAXPATHLEN];
@@ -386,7 +387,7 @@
int hostok;
char lusername[32], rusername[32], termtype[256];
- hname = network_init(netfd, &hostok);
+ hname = network_init(netfd, no_host_check, &hostok);
getstr(rusername, sizeof(rusername), "remuser too long");
getstr(lusername, sizeof(lusername), "locuser too long");
@@ -439,15 +440,16 @@
openlog("rlogind", LOG_PID | LOG_CONS, LOG_AUTH);
opterr = 0;
- while ((ch = getopt(argc, argv, "ahLln")) != EOF) {
+ while ((ch = getopt(argc, argv, "ahLlDn")) != EOF) {
switch (ch) {
case 'a': check_all = 1; break;
case 'h': allow_root_rhosts = 1; break;
case 'L': deny_all_rhosts_hequiv = 1; break;
case 'l': use_rhosts = 0; break;
+ case 'D': no_host_check = 1; break;
case 'n': keepalive = 0; break;
case '?': default:
- syslog(LOG_ERR, "usage: rlogind [-ahLln]");
+ syslog(LOG_ERR, "usage: rlogind [-ahLlDn]");
break;
}
}
diff -uNr netkit-rsh-0.17.orig/rlogind/rlogind.h netkit-rsh-0.17.new/rlogind/rlogind.h
--- netkit-rsh-0.17.orig/rlogind/rlogind.h Wed Oct 8 12:29:50 2003
+++ netkit-rsh-0.17.new/rlogind/rlogind.h Wed Oct 8 12:58:50 2003
@@ -3,7 +3,7 @@
void fatal(int f, const char *msg, int syserr);
/* network.c */
-char *network_init(int fd, int *hostokp);
+char *network_init(int fd, int no_host_check, int *hostokp);
void network_confirm(void);
void network_anticonfirm(void);
void network_close(void);
diff -uNr netkit-rsh-0.17.orig/rshd/rshd.c netkit-rsh-0.17.new/rshd/rshd.c
--- netkit-rsh-0.17.orig/rshd/rshd.c Wed Oct 8 12:29:50 2003
+++ netkit-rsh-0.17.new/rshd/rshd.c Wed Oct 8 10:43:04 2003
@@ -90,13 +90,14 @@
static pam_handle_t *pamh;
#endif /* USE_PAM */
-#define OPTIONS "ahlLn"
+#define OPTIONS "ahlLnD"
static int keepalive = 1;
static int check_all = 0;
static int paranoid = 0;
static int sent_null;
-static int allow_root_rhosts=0;
+static int allow_root_rhosts = 0;
+static int no_host_check = 0;
char username[20] = "USER=";
char homedir[64] = "HOME=";
@@ -305,6 +306,7 @@
/*
* Attempt to confirm the DNS.
*/
+
#ifdef RES_DNSRCH
_res.options &= ~RES_DNSRCH;
#endif
@@ -323,6 +325,8 @@
}
syslog(LOG_NOTICE, "Host addr %s not listed for host %s",
inet_ntoa(fromp->sin_addr), hp->h_name);
+ if ( no_host_check == 1 )
+ return hostname;
fail("Host address mismatch for %s\n",
remuser, inet_ntoa(fromp->sin_addr), locuser, cmdbuf);
return NULL; /* not reachable */
@@ -596,6 +600,10 @@
paranoid = 1;
break;
+ case 'D':
+ no_host_check = 1;
+ break;
+
case '?':
default:
syslog(LOG_ERR, "usage: rshd [-%s]", OPTIONS);