mirror of
git://anongit.mindrot.org/openssh.git
synced 2024-11-27 14:44:21 +08:00
upstream: make ssh_remote_ipaddr() capable of being called after
the ssh->state has been torn down; bz#2773 OpenBSD-Commit-ID: 167f12523613ca3d16d7716a690e7afa307dc7eb
This commit is contained in:
parent
3e088aaf23
commit
854ae209f9
12
packet.c
12
packet.c
@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: packet.c,v 1.270 2018/05/25 03:20:59 dtucker Exp $ */
|
||||
/* $OpenBSD: packet.c,v 1.271 2018/06/01 04:05:29 djm Exp $ */
|
||||
/*
|
||||
* Author: Tatu Ylonen <ylo@cs.hut.fi>
|
||||
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
|
||||
@ -418,13 +418,16 @@ ssh_packet_start_discard(struct ssh *ssh, struct sshenc *enc,
|
||||
int
|
||||
ssh_packet_connection_is_on_socket(struct ssh *ssh)
|
||||
{
|
||||
struct session_state *state = ssh->state;
|
||||
struct session_state *state;
|
||||
struct sockaddr_storage from, to;
|
||||
socklen_t fromlen, tolen;
|
||||
|
||||
if (state->connection_in == -1 || state->connection_out == -1)
|
||||
if (ssh == NULL || ssh->state == NULL)
|
||||
return 0;
|
||||
|
||||
state = ssh->state;
|
||||
if (state->connection_in == -1 || state->connection_out == -1)
|
||||
return 0;
|
||||
/* filedescriptors in and out are the same, so it's a socket */
|
||||
if (state->connection_in == state->connection_out)
|
||||
return 1;
|
||||
@ -508,11 +511,12 @@ ssh_packet_get_connection_out(struct ssh *ssh)
|
||||
const char *
|
||||
ssh_remote_ipaddr(struct ssh *ssh)
|
||||
{
|
||||
const int sock = ssh->state->connection_in;
|
||||
int sock;
|
||||
|
||||
/* Check whether we have cached the ipaddr. */
|
||||
if (ssh->remote_ipaddr == NULL) {
|
||||
if (ssh_packet_connection_is_on_socket(ssh)) {
|
||||
sock = ssh->state->connection_in;
|
||||
ssh->remote_ipaddr = get_peer_ipaddr(sock);
|
||||
ssh->remote_port = get_peer_port(sock);
|
||||
ssh->local_ipaddr = get_local_ipaddr(sock);
|
||||
|
Loading…
Reference in New Issue
Block a user