From b125da77cc7c2b3e742eb8ff6922293b4db784c9 Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Sun, 31 Mar 2013 20:32:41 -0700 Subject: [PATCH] Fixed prior logic in sim_check_conn to return error conditions prior to read/write checks and to validate the peer's address on both read and write connection checks. --- sim_sock.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/sim_sock.c b/sim_sock.c index 0748286c..33a5f20c 100644 --- a/sim_sock.c +++ b/sim_sock.c @@ -862,14 +862,13 @@ FD_SET (sock, er_p); if (rd) select ((int) sock + 1, rw_p, NULL, er_p, &tz); else select ((int) sock + 1, NULL, rw_p, er_p, &tz); -if (FD_ISSET (sock, rw_p)) { - if ((rd) || (0 == getpeername (sock, (struct sockaddr *)&peername, &peernamesize))) +if (FD_ISSET (sock, er_p)) + return -1; +if (FD_ISSET (sock, rw_p)) + if (0 == getpeername (sock, (struct sockaddr *)&peername, &peernamesize)) return 1; else return -1; - } -if (FD_ISSET (sock, er_p)) - return -1; return 0; }