Re: Hi does anyone know how to update torsocks to latest version

David Uhden Collado <[email protected]> Mon, 3 Aug 2026 00:21:00 +0000
Newsgroups gmane.os.openbsd.ports
Message-ID <[email protected]>
izzy Meyer wrote:
> On Wed, 29 Jul 2026 11:30:34 +0100
> Stuart Henderson <[email protected]> wrote:
> 
>> On 2026/07/28 20:38, Kolton wrote:
>>> Hi torsocks is over 2 years old in the ports does anyone know how
>>> to update it? Idk much about coding and am like an old granny using
>>> OpenBSD thx so much
>>
>> I don't use torsocks so runtime is not tested, but at least the newer
>> version builds with this.
>>
>> Index: Makefile
>> ===================================================================
>> RCS file: /cvs/ports/net/torsocks/Makefile,v
>> diff -u -p -r1.19 Makefile
>> --- Makefile	31 Jan 2024 22:46:19 -0000	1.19
>> +++ Makefile	29 Jul 2026 10:28:53 -0000
>> @@ -1,6 +1,6 @@
>>   COMMENT =		SOCKS proxy for use with Tor
>>   
>> -V =			2.4.0
>> +V =			2.5.0
>>   DISTNAME =		torsocks-v${V}
>>   PKGNAME =		${DISTNAME:S/v//}
>>   
>> @@ -27,6 +27,7 @@ USE_LIBTOOL =		gnu
>>   RUN_DEPENDS =		net/tor
>>   
>>   FAKE_FLAGS =		CONFDIR=${PREFIX}/share/examples/torsocks
>> +CFLAGS +=		-DAI_V4MAPPED=0
>>   
>>   CONFIGURE_STYLE =	autoreconf autoheader
>>   
>> Index: distinfo
>> ===================================================================
>> RCS file: /cvs/ports/net/torsocks/distinfo,v
>> diff -u -p -r1.5 distinfo
>> --- distinfo	31 Jan 2024 22:46:19 -0000	1.5
>> +++ distinfo	29 Jul 2026 10:28:53 -0000
>> @@ -1,2 +1,2 @@
>> -SHA256 (torsocks-v2.4.0.tar.gz) =
>> wBtHHYntqfPI3LhaRI6AZmktBwf5/4sqx+ZlpgIpG4c= -SIZE
>> (torsocks-v2.4.0.tar.gz) = 118991 +SHA256 (torsocks-v2.5.0.tar.gz) =
>> D8jhjy3C4S8RKQVPbVrMfsw/A0W7V+1lP8jGZ05uzH4= +SIZE
>> (torsocks-v2.5.0.tar.gz) = 122020 Index: patches/patch-configure_ac
>> ===================================================================
>> RCS file: /cvs/ports/net/torsocks/patches/patch-configure_ac,v
>> diff -u -p -r1.1 patch-configure_ac
>> --- patches/patch-configure_ac	11 Nov 2023 11:51:22
>> -0000	1.1 +++ patches/patch-configure_ac	29 Jul 2026
>> 10:28:53 -0000 @@ -5,16 +5,18 @@ For upstream: needs an autoheader
>> call t Index: configure.ac
>>   --- configure.ac.orig
>>   +++ configure.ac
>> -@@ -53,10 +53,12 @@ AC_CHECK_HEADERS(dlfcn.h sys/syscall.h
>> sys/socket.h ar +@@ -53,13 +53,14 @@ AC_CHECK_HEADERS(dlfcn.h
>> sys/syscall.h sys/socket.h ar
>>    dnl Checks for required library functions.
>>    AC_CHECK_FUNCS(strcspn strdup strerror strcasecmp strncasecmp mmap
>> munmap \
>>   -               socket connect close syscall recv send memset memcpy
>> strlen \
>>   +               socket connect close recv send memset memcpy strlen \
>> -                strncpy strcmp malloc calloc strstr strtoul free,,
>> +                strcmp malloc calloc strstr strtoul free,,
>>    	[AC_MSG_ERROR("Required function not found")]
>>    )
>> -+dnl Checks for optional library functions
>> +
>> + dnl Checks for optional library functions.
>> + AC_CHECK_FUNCS(strlcpy strlcat)
>>   +AC_CHECK_FUNCS(syscall __syscall,,)
>>    
>>    ##############################################################################
>> Index: patches/patch-src_common_compat_c
>> ===================================================================
>> RCS file: /cvs/ports/net/torsocks/patches/patch-src_common_compat_c,v
>> diff -u -p -r1.2 patch-src_common_compat_c
>> --- patches/patch-src_common_compat_c	11 Mar 2022 19:47:53
>> -0000	1.2 +++ patches/patch-src_common_compat_c	29 Jul
>> 2026 10:28:53 -0000 @@ -9,9 +9,9 @@ Index: src/common/compat.c
>>   +		defined(__darwin__) || defined(__NetBSD__) || \
>>   +		defined(__OpenBSD__))
>>    
>> - /*
>> -  * Initialize a pthread mutex. This never fails.
>> -@@ -97,4 +98,4 @@ void tsocks_once(tsocks_once_t *o, void
>> (*init_routine
>> + /* Inline the strl functions if the platform doesn't have them. */
>> + #ifndef HAVE_STRLCPY
>> +@@ -105,4 +106,4 @@ void tsocks_once(tsocks_once_t *o, void
>> (*init_routine tsocks_mutex_unlock(&o->mutex);
>>    }
>>    
>> Index: patches/patch-src_common_compat_h
>> ===================================================================
>> RCS file: /cvs/ports/net/torsocks/patches/patch-src_common_compat_h,v
>> diff -u -p -r1.4 patch-src_common_compat_h
>> --- patches/patch-src_common_compat_h	31 Jan 2024 22:46:19
>> -0000	1.4 +++ patches/patch-src_common_compat_h	29 Jul
>> 2026 10:28:53 -0000 @@ -11,7 +11,7 @@ Index: src/common/compat.h
>>    
>>    #ifndef RTLD_NEXT
>>    #define RTLD_NEXT	((void *) -1)
>> -@@ -58,7 +59,7 @@ void tsocks_once(tsocks_once_t *o, void
>> (*init_routine +@@ -65,7 +66,7 @@ void tsocks_once(tsocks_once_t *o,
>> void (*init_routine
>>    #else
>>    #error "OS not supported."
>> @@ -20,7 +20,7 @@ Index: src/common/compat.h
>>    
>>    #if defined(__linux__)
>>    #include <unistd.h>
>> -@@ -204,7 +205,8 @@ void tsocks_once(tsocks_once_t *o, void
>> (*init_routine +@@ -211,7 +212,8 @@ void tsocks_once(tsocks_once_t
>> *o, void (*init_routine
>>    #endif /* __linux__ */
>>    
>> @@ -30,7 +30,7 @@ Index: src/common/compat.h
>>    
>>    #include <sys/syscall.h>
>>    #include <unistd.h>
>> -@@ -223,7 +225,7 @@ void tsocks_once(tsocks_once_t *o, void
>> (*init_routine +@@ -230,7 +232,7 @@ void tsocks_once(tsocks_once_t
>> *o, void (*init_routine #define TSOCKS_NR_LISTEN    SYS_listen
>>    #define TSOCKS_NR_RECVMSG   SYS_recvmsg
>>    
>>
> 
> This diff seems to work at runtime too. curl-ing ifconfig.me via
> torsocks results in a different IP than without. I have a personal tor
> bridge on my lan that torsocks is configured to point to. Seems to work
> well. Thanks for the diff!
> 
It is a shame that OpenBSD does not have Linux-style namespaces, because 
Oniux depends on network, mount, PID, and user namespaces to isolate an 
application and give it access only to a virtual interface connected to 
Tor. That is why it cannot be ported directly: it would have to be 
almost completely redesigned.

A more realistic alternative would be to create an OpenBSD-specific fork 
of torsocks. It could still use LD_PRELOAD to intercept socket(), 
connect(), getaddrinfo(), and other networking functions, but enforce a 
stricter policy: block connections that cannot be redirected through 
SOCKS, disable UDP and raw sockets, force DNS resolution through Tor, 
and terminate the process if it attempts any direct connection.

It could also include a privileged launcher that places the process 
inside an rdomain with no direct Internet route, applies PF rules, and 
then drops privileges. Combining torsocks, rdomain, PF, a dedicated 
user, pledge(), and unveil() would not provide the same isolation as 
Oniux, especially against statically linked binaries or direct system 
calls, but it could be much more robust than the current torsocks 
implementation.