summary refs log tree commit diff
path: root/inet/rexec.c
diff options
context:
space:
mode:
Diffstat (limited to 'inet/rexec.c')
-rw-r--r--inet/rexec.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/inet/rexec.c b/inet/rexec.c
index 30b7cca22c..2a3a256f11 100644
--- a/inet/rexec.c
+++ b/inet/rexec.c
@@ -117,11 +117,14 @@ retry:
 		}
 		listen(s2, 1);
 		sa2len = sizeof (sa2);
-		if (getsockname(s2, (struct sockaddr *)&sa2, &sa2len) < 0 ||
-		    sa2len != SA_LEN((struct sockaddr *)&sa2)) {
+		if (getsockname(s2, (struct sockaddr *)&sa2, &sa2len) < 0) {
 			perror("getsockname");
 			(void) __close(s2);
 			goto bad;
+		} else if (sa2len != SA_LEN((struct sockaddr *)&sa2)) {
+			__set_errno(EINVAL);
+			(void) __close(s2);
+			goto bad;
 		}
 		port = 0;
 		if (!getnameinfo((struct sockaddr *)&sa2, sa2len,