Commit ee7c64fbcd for openssl.org
commit ee7c64fbcd24276233d238aff1cdf9996be943cd
Author: YZL0v3ZZ <2055877225@qq.com>
Date: Wed Mar 11 22:54:05 2026 +0800
Fix system resource leak in TerminalSocket()
When establishing a terminal socket on OpenVMS, if the async I/O
read operation (sys$qio) fails, the error path returns early without
freeing the allocated channel via sys$dassgn.
Add sys$dassgn(TerminalDeviceChan) in the sys$qio error path during
creation. Also ensure dassgn executes regardless of whether sys$cancel
succeeds during deletion to avoid exhausting the I/O channel quota.
Reviewed-by: Nikola Pajkovsky <nikolap@openssl.org>
Reviewed-by: Richard Levitte <levitte@openssl.org>
Merge-date: Wed Aug 19 15:37:03 2026
Merged-from: https://github.com/openssl/openssl/pull/30375
diff --git a/apps/lib/vms_term_sock.c b/apps/lib/vms_term_sock.c
index e60d7f0a1b..8cdca03f3f 100644
--- a/apps/lib/vms_term_sock.c
+++ b/apps/lib/vms_term_sock.c
@@ -230,6 +230,7 @@ int TerminalSocket(int FunctionCode, int *ReturnSocket)
LogMessage("TerminalSocket: SYS$QIO () - %08X", status);
close(TerminalSocketPair[0]);
close(TerminalSocketPair[1]);
+ sys$dassgn(TerminalDeviceChan);
return TERM_SOCK_FAILURE;
}
@@ -248,6 +249,7 @@ int TerminalSocket(int FunctionCode, int *ReturnSocket)
LogMessage("TerminalSocket: SYS$CANCEL () - %08X", status);
close(TerminalSocketPair[0]);
close(TerminalSocketPair[1]);
+ sys$dassgn(TerminalDeviceChan);
return TERM_SOCK_FAILURE;
}