- dtucker@cvs.openbsd.org 2007/12/27 14:22:08
[servconf.c canohost.c misc.c channels.c sshconnect.c misc.h ssh-keyscan.c sshd.c] Add a small helper function to consistently handle the EAI_SYSTEM error code of getaddrinfo. Prompted by vgiffin at apple com via bz #1417. ok markus@ stevesk@
This commit is contained in:
parent
88b976f214
commit
4abde771b7
|
@ -4,6 +4,12 @@
|
||||||
[sftp.c]
|
[sftp.c]
|
||||||
unbreak lls command and add a regress test that would have caught the
|
unbreak lls command and add a regress test that would have caught the
|
||||||
breakage; spotted by mouring@
|
breakage; spotted by mouring@
|
||||||
|
- dtucker@cvs.openbsd.org 2007/12/27 14:22:08
|
||||||
|
[servconf.c canohost.c misc.c channels.c sshconnect.c misc.h ssh-keyscan.c
|
||||||
|
sshd.c]
|
||||||
|
Add a small helper function to consistently handle the EAI_SYSTEM error
|
||||||
|
code of getaddrinfo. Prompted by vgiffin at apple com via bz #1417.
|
||||||
|
ok markus@ stevesk@
|
||||||
|
|
||||||
20071202
|
20071202
|
||||||
- (dtucker) [configure.ac] Enable -fstack-protector-all on systems where
|
- (dtucker) [configure.ac] Enable -fstack-protector-all on systems where
|
||||||
|
@ -3465,4 +3471,4 @@
|
||||||
OpenServer 6 and add osr5bigcrypt support so when someone migrates
|
OpenServer 6 and add osr5bigcrypt support so when someone migrates
|
||||||
passwords between UnixWare and OpenServer they will still work. OK dtucker@
|
passwords between UnixWare and OpenServer they will still work. OK dtucker@
|
||||||
|
|
||||||
$Id: ChangeLog,v 1.4807 2007/12/28 15:40:43 dtucker Exp $
|
$Id: ChangeLog,v 1.4808 2007/12/28 15:43:51 dtucker Exp $
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: canohost.c,v 1.61 2006/08/03 03:34:41 deraadt Exp $ */
|
/* $OpenBSD: canohost.c,v 1.62 2007/12/27 14:22:08 dtucker Exp $ */
|
||||||
/*
|
/*
|
||||||
* Author: Tatu Ylonen <ylo@cs.hut.fi>
|
* Author: Tatu Ylonen <ylo@cs.hut.fi>
|
||||||
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
|
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
|
||||||
|
@ -32,6 +32,7 @@
|
||||||
#include "packet.h"
|
#include "packet.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "canohost.h"
|
#include "canohost.h"
|
||||||
|
#include "misc.h"
|
||||||
|
|
||||||
static void check_ip_options(int, char *);
|
static void check_ip_options(int, char *);
|
||||||
|
|
||||||
|
@ -271,7 +272,7 @@ get_socket_address(int sock, int remote, int flags)
|
||||||
if ((r = getnameinfo((struct sockaddr *)&addr, addrlen, ntop,
|
if ((r = getnameinfo((struct sockaddr *)&addr, addrlen, ntop,
|
||||||
sizeof(ntop), NULL, 0, flags)) != 0) {
|
sizeof(ntop), NULL, 0, flags)) != 0) {
|
||||||
error("get_socket_address: getnameinfo %d failed: %s", flags,
|
error("get_socket_address: getnameinfo %d failed: %s", flags,
|
||||||
r == EAI_SYSTEM ? strerror(errno) : gai_strerror(r));
|
ssh_gai_strerror(r));
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
return xstrdup(ntop);
|
return xstrdup(ntop);
|
||||||
|
@ -372,7 +373,7 @@ get_sock_port(int sock, int local)
|
||||||
if ((r = getnameinfo((struct sockaddr *)&from, fromlen, NULL, 0,
|
if ((r = getnameinfo((struct sockaddr *)&from, fromlen, NULL, 0,
|
||||||
strport, sizeof(strport), NI_NUMERICSERV)) != 0)
|
strport, sizeof(strport), NI_NUMERICSERV)) != 0)
|
||||||
fatal("get_sock_port: getnameinfo NI_NUMERICSERV failed: %s",
|
fatal("get_sock_port: getnameinfo NI_NUMERICSERV failed: %s",
|
||||||
r == EAI_SYSTEM ? strerror(errno) : gai_strerror(r));
|
ssh_gai_strerror(r));
|
||||||
return atoi(strport);
|
return atoi(strport);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
14
channels.c
14
channels.c
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: channels.c,v 1.270 2007/06/25 08:20:03 dtucker Exp $ */
|
/* $OpenBSD: channels.c,v 1.271 2007/12/27 14:22:08 dtucker Exp $ */
|
||||||
/*
|
/*
|
||||||
* Author: Tatu Ylonen <ylo@cs.hut.fi>
|
* Author: Tatu Ylonen <ylo@cs.hut.fi>
|
||||||
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
|
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
|
||||||
|
@ -2409,10 +2409,11 @@ channel_setup_fwd_listener(int type, const char *listen_addr, u_short listen_por
|
||||||
if (addr == NULL) {
|
if (addr == NULL) {
|
||||||
/* This really shouldn't happen */
|
/* This really shouldn't happen */
|
||||||
packet_disconnect("getaddrinfo: fatal error: %s",
|
packet_disconnect("getaddrinfo: fatal error: %s",
|
||||||
gai_strerror(r));
|
ssh_gai_strerror(r));
|
||||||
} else {
|
} else {
|
||||||
error("channel_setup_fwd_listener: "
|
error("channel_setup_fwd_listener: "
|
||||||
"getaddrinfo(%.64s): %s", addr, gai_strerror(r));
|
"getaddrinfo(%.64s): %s", addr,
|
||||||
|
ssh_gai_strerror(r));
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -2732,7 +2733,7 @@ connect_to(const char *host, u_short port)
|
||||||
snprintf(strport, sizeof strport, "%d", port);
|
snprintf(strport, sizeof strport, "%d", port);
|
||||||
if ((gaierr = getaddrinfo(host, strport, &hints, &aitop)) != 0) {
|
if ((gaierr = getaddrinfo(host, strport, &hints, &aitop)) != 0) {
|
||||||
error("connect_to %.100s: unknown host (%s)", host,
|
error("connect_to %.100s: unknown host (%s)", host,
|
||||||
gai_strerror(gaierr));
|
ssh_gai_strerror(gaierr));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
for (ai = aitop; ai; ai = ai->ai_next) {
|
for (ai = aitop; ai; ai = ai->ai_next) {
|
||||||
|
@ -2874,7 +2875,7 @@ x11_create_display_inet(int x11_display_offset, int x11_use_localhost,
|
||||||
hints.ai_socktype = SOCK_STREAM;
|
hints.ai_socktype = SOCK_STREAM;
|
||||||
snprintf(strport, sizeof strport, "%d", port);
|
snprintf(strport, sizeof strport, "%d", port);
|
||||||
if ((gaierr = getaddrinfo(NULL, strport, &hints, &aitop)) != 0) {
|
if ((gaierr = getaddrinfo(NULL, strport, &hints, &aitop)) != 0) {
|
||||||
error("getaddrinfo: %.100s", gai_strerror(gaierr));
|
error("getaddrinfo: %.100s", ssh_gai_strerror(gaierr));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
for (ai = aitop; ai; ai = ai->ai_next) {
|
for (ai = aitop; ai; ai = ai->ai_next) {
|
||||||
|
@ -3047,7 +3048,8 @@ x11_connect_display(void)
|
||||||
hints.ai_socktype = SOCK_STREAM;
|
hints.ai_socktype = SOCK_STREAM;
|
||||||
snprintf(strport, sizeof strport, "%u", 6000 + display_number);
|
snprintf(strport, sizeof strport, "%u", 6000 + display_number);
|
||||||
if ((gaierr = getaddrinfo(buf, strport, &hints, &aitop)) != 0) {
|
if ((gaierr = getaddrinfo(buf, strport, &hints, &aitop)) != 0) {
|
||||||
error("%.100s: unknown host. (%s)", buf, gai_strerror(gaierr));
|
error("%.100s: unknown host. (%s)", buf,
|
||||||
|
ssh_gai_strerror(gaierr));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
for (ai = aitop; ai; ai = ai->ai_next) {
|
for (ai = aitop; ai; ai = ai->ai_next) {
|
||||||
|
|
11
misc.c
11
misc.c
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: misc.c,v 1.65 2006/11/23 01:35:11 ray Exp $ */
|
/* $OpenBSD: misc.c,v 1.66 2007/12/27 14:22:08 dtucker Exp $ */
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2000 Markus Friedl. All rights reserved.
|
* Copyright (c) 2000 Markus Friedl. All rights reserved.
|
||||||
* Copyright (c) 2005,2006 Damien Miller. All rights reserved.
|
* Copyright (c) 2005,2006 Damien Miller. All rights reserved.
|
||||||
|
@ -42,6 +42,7 @@
|
||||||
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
#include <netdb.h>
|
||||||
#ifdef HAVE_PATHS_H
|
#ifdef HAVE_PATHS_H
|
||||||
# include <paths.h>
|
# include <paths.h>
|
||||||
#include <pwd.h>
|
#include <pwd.h>
|
||||||
|
@ -120,6 +121,14 @@ unset_nonblock(int fd)
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char *
|
||||||
|
ssh_gai_strerror(int gaierr)
|
||||||
|
{
|
||||||
|
if (gaierr == EAI_SYSTEM)
|
||||||
|
return strerror(errno);
|
||||||
|
return gai_strerror(gaierr);
|
||||||
|
}
|
||||||
|
|
||||||
/* disable nagle on socket */
|
/* disable nagle on socket */
|
||||||
void
|
void
|
||||||
set_nodelay(int fd)
|
set_nodelay(int fd)
|
||||||
|
|
3
misc.h
3
misc.h
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: misc.h,v 1.36 2006/08/18 10:27:16 djm Exp $ */
|
/* $OpenBSD: misc.h,v 1.37 2007/12/27 14:22:08 dtucker Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Author: Tatu Ylonen <ylo@cs.hut.fi>
|
* Author: Tatu Ylonen <ylo@cs.hut.fi>
|
||||||
|
@ -35,6 +35,7 @@ char *tohex(const void *, size_t);
|
||||||
void sanitise_stdfd(void);
|
void sanitise_stdfd(void);
|
||||||
|
|
||||||
struct passwd *pwcopy(struct passwd *);
|
struct passwd *pwcopy(struct passwd *);
|
||||||
|
const char *ssh_gai_strerror(int);
|
||||||
|
|
||||||
typedef struct arglist arglist;
|
typedef struct arglist arglist;
|
||||||
struct arglist {
|
struct arglist {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: servconf.c,v 1.172 2007/04/23 10:15:39 dtucker Exp $ */
|
/* $OpenBSD: servconf.c,v 1.173 2007/12/27 14:22:08 dtucker Exp $ */
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
|
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
|
||||||
* All rights reserved
|
* All rights reserved
|
||||||
|
@ -458,7 +458,7 @@ add_one_listen_addr(ServerOptions *options, char *addr, u_short port)
|
||||||
if ((gaierr = getaddrinfo(addr, strport, &hints, &aitop)) != 0)
|
if ((gaierr = getaddrinfo(addr, strport, &hints, &aitop)) != 0)
|
||||||
fatal("bad addr or host: %s (%s)",
|
fatal("bad addr or host: %s (%s)",
|
||||||
addr ? addr : "<NULL>",
|
addr ? addr : "<NULL>",
|
||||||
gai_strerror(gaierr));
|
ssh_gai_strerror(gaierr));
|
||||||
for (ai = aitop; ai->ai_next; ai = ai->ai_next)
|
for (ai = aitop; ai->ai_next; ai = ai->ai_next)
|
||||||
;
|
;
|
||||||
ai->ai_next = options->listen_addrs;
|
ai->ai_next = options->listen_addrs;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: ssh-keyscan.c,v 1.74 2006/10/06 02:29:19 djm Exp $ */
|
/* $OpenBSD: ssh-keyscan.c,v 1.75 2007/12/27 14:22:08 dtucker Exp $ */
|
||||||
/*
|
/*
|
||||||
* Copyright 1995, 1996 by David Mazieres <dm@lcs.mit.edu>.
|
* Copyright 1995, 1996 by David Mazieres <dm@lcs.mit.edu>.
|
||||||
*
|
*
|
||||||
|
@ -410,7 +410,7 @@ tcpconnect(char *host)
|
||||||
hints.ai_family = IPv4or6;
|
hints.ai_family = IPv4or6;
|
||||||
hints.ai_socktype = SOCK_STREAM;
|
hints.ai_socktype = SOCK_STREAM;
|
||||||
if ((gaierr = getaddrinfo(host, strport, &hints, &aitop)) != 0)
|
if ((gaierr = getaddrinfo(host, strport, &hints, &aitop)) != 0)
|
||||||
fatal("getaddrinfo %s: %s", host, gai_strerror(gaierr));
|
fatal("getaddrinfo %s: %s", host, ssh_gai_strerror(gaierr));
|
||||||
for (ai = aitop; ai; ai = ai->ai_next) {
|
for (ai = aitop; ai; ai = ai->ai_next) {
|
||||||
s = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol);
|
s = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol);
|
||||||
if (s < 0) {
|
if (s < 0) {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: sshconnect.c,v 1.202 2007/09/04 11:15:55 djm Exp $ */
|
/* $OpenBSD: sshconnect.c,v 1.203 2007/12/27 14:22:08 dtucker Exp $ */
|
||||||
/*
|
/*
|
||||||
* Author: Tatu Ylonen <ylo@cs.hut.fi>
|
* Author: Tatu Ylonen <ylo@cs.hut.fi>
|
||||||
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
|
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
|
||||||
|
@ -224,7 +224,7 @@ ssh_create_socket(int privileged, struct addrinfo *ai)
|
||||||
gaierr = getaddrinfo(options.bind_address, "0", &hints, &res);
|
gaierr = getaddrinfo(options.bind_address, "0", &hints, &res);
|
||||||
if (gaierr) {
|
if (gaierr) {
|
||||||
error("getaddrinfo: %s: %s", options.bind_address,
|
error("getaddrinfo: %s: %s", options.bind_address,
|
||||||
gai_strerror(gaierr));
|
ssh_gai_strerror(gaierr));
|
||||||
close(sock);
|
close(sock);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -356,8 +356,8 @@ ssh_connect(const char *host, struct sockaddr_storage * hostaddr,
|
||||||
hints.ai_socktype = SOCK_STREAM;
|
hints.ai_socktype = SOCK_STREAM;
|
||||||
snprintf(strport, sizeof strport, "%u", port);
|
snprintf(strport, sizeof strport, "%u", port);
|
||||||
if ((gaierr = getaddrinfo(host, strport, &hints, &aitop)) != 0)
|
if ((gaierr = getaddrinfo(host, strport, &hints, &aitop)) != 0)
|
||||||
fatal("%s: %.100s: %s", __progname, host,
|
fatal("%s: Could not resolve hostname %.100s: %s", __progname,
|
||||||
gai_strerror(gaierr));
|
host, ssh_gai_strerror(gaierr));
|
||||||
|
|
||||||
for (attempt = 0; attempt < connection_attempts; attempt++) {
|
for (attempt = 0; attempt < connection_attempts; attempt++) {
|
||||||
if (attempt > 0) {
|
if (attempt > 0) {
|
||||||
|
|
5
sshd.c
5
sshd.c
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: sshd.c,v 1.351 2007/05/22 10:18:52 djm Exp $ */
|
/* $OpenBSD: sshd.c,v 1.352 2007/12/27 14:22:08 dtucker Exp $ */
|
||||||
/*
|
/*
|
||||||
* Author: Tatu Ylonen <ylo@cs.hut.fi>
|
* Author: Tatu Ylonen <ylo@cs.hut.fi>
|
||||||
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
|
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
|
||||||
|
@ -953,8 +953,7 @@ server_listen(void)
|
||||||
ntop, sizeof(ntop), strport, sizeof(strport),
|
ntop, sizeof(ntop), strport, sizeof(strport),
|
||||||
NI_NUMERICHOST|NI_NUMERICSERV)) != 0) {
|
NI_NUMERICHOST|NI_NUMERICSERV)) != 0) {
|
||||||
error("getnameinfo failed: %.100s",
|
error("getnameinfo failed: %.100s",
|
||||||
(ret != EAI_SYSTEM) ? gai_strerror(ret) :
|
ssh_gai_strerror(ret));
|
||||||
strerror(errno));
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
/* Create socket for listening. */
|
/* Create socket for listening. */
|
||||||
|
|
Loading…
Reference in New Issue