From dc6d1434a727185cd082ebc6c38b1ba593311c96 Mon Sep 17 00:00:00 2001
From: Michael Tuexen <tuexen@fh-muenster.de>
Date: Sun, 8 Oct 2017 13:56:01 +0200
Subject: [PATCH] Fix CID 187177.

---
 gtests/net/packetdrill/run_system_call.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/gtests/net/packetdrill/run_system_call.c b/gtests/net/packetdrill/run_system_call.c
index 6f2647b1..9b841d1f 100644
--- a/gtests/net/packetdrill/run_system_call.c
+++ b/gtests/net/packetdrill/run_system_call.c
@@ -2156,18 +2156,26 @@ static int syscall_accept(struct state *state, struct syscall_spec *syscall,
 
 	result = accept(live_fd, (struct sockaddr *)&live_addr, &live_addrlen);
 
-	if (end_syscall(state, syscall, CHECK_FD, result, error))
+	if (end_syscall(state, syscall, CHECK_FD, result, error)) {
+		if (result >= 0) {
+			close(result);
+		}
 		return STATUS_ERR;
+	}
 
 	if (result >= 0) {
 		live_accepted_fd = result;
-		if (get_s32(syscall->result, &script_accepted_fd, error))
+		if (get_s32(syscall->result, &script_accepted_fd, error)) {
+			close(live_accepted_fd);
 			return STATUS_ERR;
+		}
 		if (run_syscall_accept(
 			    state, script_accepted_fd, live_accepted_fd,
 			    (struct sockaddr *)&live_addr, live_addrlen,
-			    error))
+			    error)) {
+			close(live_accepted_fd);
 			return STATUS_ERR;
+		}
 	}
 
 	return STATUS_OK;
-- 
GitLab