git: f02e397c3be1 - main - security/py-ssh-audit: fix hang on runtime

From: Piotr Kubaj <pkubaj_at_FreeBSD.org>
Date: Fri, 16 Aug 2024 11:54:34 UTC
The branch main has been updated by pkubaj:

URL: https://cgit.FreeBSD.org/ports/commit/?id=f02e397c3be1c20d736e3412ca82f14ba14b9e8c

commit f02e397c3be1c20d736e3412ca82f14ba14b9e8c
Author:     Piotr Kubaj <pkubaj@FreeBSD.org>
AuthorDate: 2024-08-16 10:32:11 +0000
Commit:     Piotr Kubaj <pkubaj@FreeBSD.org>
CommitDate: 2024-08-16 11:54:25 +0000

    security/py-ssh-audit: fix hang on runtime
    
    PR:     280827
    Submitted by:   michaelo
---
 security/py-ssh-audit/Makefile                     |  1 +
 .../files/patch-src_ssh__audit_dheat.py            | 23 ++++++++++++++++++++++
 2 files changed, 24 insertions(+)

diff --git a/security/py-ssh-audit/Makefile b/security/py-ssh-audit/Makefile
index db5af9c0d653..db7b92d0d2a2 100644
--- a/security/py-ssh-audit/Makefile
+++ b/security/py-ssh-audit/Makefile
@@ -1,6 +1,7 @@
 PORTNAME=	ssh-audit
 DISTVERSIONPREFIX=	v
 DISTVERSION=	3.2.0
+PORTREVISION=	1
 CATEGORIES=	security
 PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
 
diff --git a/security/py-ssh-audit/files/patch-src_ssh__audit_dheat.py b/security/py-ssh-audit/files/patch-src_ssh__audit_dheat.py
new file mode 100644
index 000000000000..0049edb94d28
--- /dev/null
+++ b/security/py-ssh-audit/files/patch-src_ssh__audit_dheat.py
@@ -0,0 +1,23 @@
+--- src/ssh_audit/dheat.py.orig	2024-08-16 09:16:28 UTC
++++ src/ssh_audit/dheat.py
+@@ -21,6 +21,7 @@
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+    THE SOFTWARE.
+ """
++import errno
+ import multiprocessing
+ import os
+ import queue
+@@ -432,10 +433,10 @@ class DHEat:
+                 # out.d("Creating socket (%u of %u already exist)..." % (len(socket_dict), concurrent_sockets), write_now=True)
+                 ret = s.connect_ex((aconf.host, aconf.port))
+                 num_attempted_connections += 1
+-                if ret in [0, 115]:  # Check if connection is successful or EINPROGRESS.
++                if ret in [0, errno.EINPROGRESS]:
+                     socket_dict[s] = now
+                 else:
+-                    out.d("connect_ex() returned: %d" % ret, write_now=True)
++                    out.d("connect_ex() returned: %s (%d)" % (os.strerror(ret), ret), write_now=True)
+ 
+             # out.d("Calling select() on %u sockets..." % len(socket_dict), write_now=True)
+             socket_list: List[socket.socket] = [*socket_dict]  # Get a list of sockets from the dictionary.