diff --git a/src/bin/pg_ctl/pg_ctl.c b/src/bin/pg_ctl/pg_ctl.c
index 8a405ff122..04cbb6b28c 100644
--- a/src/bin/pg_ctl/pg_ctl.c
+++ b/src/bin/pg_ctl/pg_ctl.c
@@ -1811,14 +1811,19 @@ CreateRestrictedProcess(char *cmd, PROCESS_INFORMATION *processInfo, bool as_ser
 	{
 		write_stderr(_("%s: could not allocate SIDs: error code %lu\n"),
 					 progname, (unsigned long) GetLastError());
+		CloseHandle(origToken);
 		return 0;
 	}
 
 	/* Get list of privileges to remove */
 	delPrivs = GetPrivilegesToDelete(origToken);
 	if (delPrivs == NULL)
+	{
+		CloseHandle(origToken);
+
 		/* Error message already printed */
 		return 0;
+	}
 
 	b = CreateRestrictedToken(origToken,
 							  0,
