Mercurial > dovecot > core-2.2
diff src/lib/net.c @ 17461:2e239d925c09
lib: Changed net_geterror() to return errno instead of -1 if getsockopt() fails.
None of the callers were actually checking for the -1 error value but
instead just passing it to strerror(). Since this error should just about
never happen it's better to just return a usable return value than try to
remember to handle errors that can't normally even happen.
Found by Coverity
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 13 Jun 2014 00:09:23 +0300 |
parents | e279bd060c28 |
children | 95ac50948e39 |
line wrap: on
line diff
--- a/src/lib/net.c Fri Jun 13 00:05:16 2014 +0300 +++ b/src/lib/net.c Fri Jun 13 00:09:23 2014 +0300 @@ -961,8 +961,12 @@ int data; socklen_t len = sizeof(data); - if (getsockopt(fd, SOL_SOCKET, SO_ERROR, &data, &len) == -1) - return -1; + if (getsockopt(fd, SOL_SOCKET, SO_ERROR, &data, &len) == -1) { + /* we're now really returning the getsockopt()'s error code + instead of the socket's, but normally we should never get + here anyway. */ + return errno; + } return data; }