git: ee04ee95ab38 - main - cap_net: fix error propagation for ENOTCAPABLE in cap_getaddrinfo

From: Mariusz Zaborski <oshogbo_at_FreeBSD.org>
Date: Wed, 13 May 2026 16:46:02 UTC
The branch main has been updated by oshogbo:

URL: https://cgit.FreeBSD.org/src/commit/?id=ee04ee95ab386147c57d3b4efcc5774e8d64330b

commit ee04ee95ab386147c57d3b4efcc5774e8d64330b
Author:     Mariusz Zaborski <oshogbo@FreeBSD.org>
AuthorDate: 2026-05-12 09:48:56 +0000
Commit:     Mariusz Zaborski <oshogbo@FreeBSD.org>
CommitDate: 2026-05-13 16:42:45 +0000

    cap_net: fix error propagation for ENOTCAPABLE in cap_getaddrinfo
    
    Fixes:          b60053fde172 ("libcasper: Fix inconsistent error codes of cap_get{addr,name}info()")
---
 lib/libcasper/services/cap_net/cap_net.c        | 4 ++--
 lib/libcasper/services/cap_net/tests/net_test.c | 8 ++++----
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/lib/libcasper/services/cap_net/cap_net.c b/lib/libcasper/services/cap_net/cap_net.c
index 5887fe3c407e..59124e3cb54f 100644
--- a/lib/libcasper/services/cap_net/cap_net.c
+++ b/lib/libcasper/services/cap_net/cap_net.c
@@ -1011,12 +1011,12 @@ net_getaddrinfo(const nvlist_t *limits, const nvlist_t *nvlin, nvlist_t *nvlout)
 	}
 
 	if (!net_allowed_family(funclimit, family)) {
-		errno = ENOTCAPABLE;
+		serrno = ENOTCAPABLE;
 		error = EAI_SYSTEM;
 		goto out;
 	}
 	if (!net_allowed_hosts(funclimit, hostname, servname)) {
-		errno = ENOTCAPABLE;
+		serrno = ENOTCAPABLE;
 		error = EAI_SYSTEM;
 		goto out;
 	}
diff --git a/lib/libcasper/services/cap_net/tests/net_test.c b/lib/libcasper/services/cap_net/tests/net_test.c
index adf5773233c8..21d620e0f8d8 100644
--- a/lib/libcasper/services/cap_net/tests/net_test.c
+++ b/lib/libcasper/services/cap_net/tests/net_test.c
@@ -73,7 +73,7 @@ test_getnameinfo_v4(cap_channel_t *chan, int family, const char *ip)
 
 	capret = cap_getnameinfo(chan, (struct sockaddr *)&ipaddr, sizeof(ipaddr),
 	    capfn, sizeof(capfn), NULL, 0, NI_NAMEREQD);
-	if (capret != 0 && capret == ENOTCAPABLE)
+	if (capret == EAI_SYSTEM && errno == ENOTCAPABLE)
 		return (ENOTCAPABLE);
 
 	sysret = getnameinfo((struct sockaddr *)&ipaddr, sizeof(ipaddr), origfn,
@@ -102,7 +102,7 @@ test_getnameinfo_v6(cap_channel_t *chan, const char *ip)
 
 	capret = cap_getnameinfo(chan, (struct sockaddr *)&ipaddr, sizeof(ipaddr),
 	    capfn, sizeof(capfn), NULL, 0, NI_NAMEREQD);
-	if (capret != 0 && capret == ENOTCAPABLE)
+	if (capret == EAI_SYSTEM && errno == ENOTCAPABLE)
 		return (ENOTCAPABLE);
 
 	sysret = getnameinfo((struct sockaddr *)&ipaddr, sizeof(ipaddr), origfn,
@@ -196,8 +196,8 @@ test_getaddrinfo(cap_channel_t *chan, int family, const char *domain,
 	hints.ai_socktype = SOCK_STREAM;
 
 	capret = cap_getaddrinfo(chan, domain, servname, &hints, &capres);
-	if (capret != 0 && capret == ENOTCAPABLE)
-		return (capret);
+	if (capret == EAI_SYSTEM && errno == ENOTCAPABLE)
+		return (ENOTCAPABLE);
 
 	sysret = getaddrinfo(domain, servname, &hints, &origres);
 	if (sysret != 0)