From e8c4b8b2904e0c9241aa8538654837ed6fa619d6 Mon Sep 17 00:00:00 2001 From: Jilles Tjoelker Date: Sat, 21 Jun 2008 01:27:17 +0200 Subject: [PATCH] ident: Check getsockname() return value. --- src/s_auth.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/s_auth.c b/src/s_auth.c index 9ae504c..672cb6d 100644 --- a/src/s_auth.c +++ b/src/s_auth.c @@ -332,8 +332,13 @@ start_auth_query(struct AuthRequest *auth) * and machines with multiple IP addresses are common now */ memset(&localaddr, 0, locallen); - getsockname(rb_get_fd(auth->client->localClient->F), - (struct sockaddr *) &localaddr, &locallen); + if(getsockname(rb_get_fd(auth->client->localClient->F), + (struct sockaddr *) &localaddr, &locallen) == -1) + { + /* can happen if connection was just closed */ + rb_close(F); + return 0; + } /* XXX mangle_mapped_sockaddr((struct sockaddr *)&localaddr); */ #ifdef RB_IPV6