From 3d4a692b590368215cc76098e92cd05b25160976 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 7 Apr 2010 14:12:43 -0700 Subject: [PATCH] msgr: fail on sd < 0 I saw a case where poll(2) was blocking despite being passed an fd of -1. Since that's clearly invalid, we can fail tcp_{read,write} before that point. Weird. --- src/msg/tcp.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/msg/tcp.cc b/src/msg/tcp.cc index f5b3b210f9697..3be1f91e1ce7c 100644 --- a/src/msg/tcp.cc +++ b/src/msg/tcp.cc @@ -9,6 +9,8 @@ */ int tcp_read(int sd, char *buf, int len) { + if (sd < 0) + return -1; struct pollfd pfd; pfd.fd = sd; pfd.events = POLLIN | POLLHUP | POLLRDHUP | POLLNVAL | POLLERR; @@ -39,6 +41,8 @@ int tcp_read(int sd, char *buf, int len) { } int tcp_write(int sd, const char *buf, int len) { + if (sd < 0) + return -1; struct pollfd pfd; pfd.fd = sd; pfd.events = POLLOUT | POLLHUP | POLLRDHUP | POLLNVAL | POLLERR; -- 2.39.5