summary refs log tree commit diff
path: root/vsock.c
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2021-03-10 20:33:39 +0000
committerAlyssa Ross <hi@alyssa.is>2021-03-10 22:48:51 +0000
commitb3d840da5b9f18a97a7ec5d43a5f0fef65f2fa68 (patch)
tree9f45d9fa5ecce8360059e687053f4ca15837729c /vsock.c
parent2072b65edd19d24abe482def52ca3781b1742600 (diff)
downloaducspi-vsock-b3d840da5b9f18a97a7ec5d43a5f0fef65f2fa68.tar
ucspi-vsock-b3d840da5b9f18a97a7ec5d43a5f0fef65f2fa68.tar.gz
ucspi-vsock-b3d840da5b9f18a97a7ec5d43a5f0fef65f2fa68.tar.bz2
ucspi-vsock-b3d840da5b9f18a97a7ec5d43a5f0fef65f2fa68.tar.lz
ucspi-vsock-b3d840da5b9f18a97a7ec5d43a5f0fef65f2fa68.tar.xz
ucspi-vsock-b3d840da5b9f18a97a7ec5d43a5f0fef65f2fa68.tar.zst
ucspi-vsock-b3d840da5b9f18a97a7ec5d43a5f0fef65f2fa68.zip
vsock_accept: return fd instead of 0 on success
This would result in the spawned process being hooked up to stdin,
instead of the vsock.  Then stdin would be closed, so subsequent
processes would be connected to nothing.  Oops.

Message-Id: <20210310204516.20041-1-hi@alyssa.is>
Reviewed-by: Cole Helbling <cole.e.helbling@outlook.com>
Diffstat (limited to 'vsock.c')
-rw-r--r--vsock.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/vsock.c b/vsock.c
index d9ff3b6..e6a173c 100644
--- a/vsock.c
+++ b/vsock.c
@@ -32,14 +32,15 @@ int vsock_accept(int sockfd, uint32_t *cid, uint32_t *port)
 {
 	struct sockaddr_vm addr = { 0 };
 	socklen_t addr_size = sizeof addr;
+	int fd;
 
-	if (accept(sockfd, (struct sockaddr *)&addr, &addr_size) == -1)
+	if ((fd = accept(sockfd, (struct sockaddr *)&addr, &addr_size)) == -1)
 		return -1;
 
 	*cid = addr.svm_cid;
 	*port = addr.svm_port;
 
-	return 0;
+	return fd;
 }
 
 int vsock_connect(int fd, uint32_t cid, uint32_t port)