]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: Changed net_geterror() to return errno instead of -1 if getsockopt() fails.
authorTimo Sirainen <tss@iki.fi>
Thu, 12 Jun 2014 21:09:23 +0000 (00:09 +0300)
committerTimo Sirainen <tss@iki.fi>
Thu, 12 Jun 2014 21:09:23 +0000 (00:09 +0300)
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

src/lib/net.c

index fc641d65705126fe05cbb3f14604f4467aa6e881..4ba71811db0afb26fe6d8252363f768fd51e0f24 100644 (file)
@@ -961,8 +961,12 @@ int net_geterror(int fd)
        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;
 }