From patchwork Thu Jan 22 13:30:50 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Lichtenheld X-Patchwork-Id: 4729 Return-Path: Delivered-To: patchwork@openvpn.net Received: by 2002:a05:7000:220f:b0:80a:3855:ce6a with SMTP id q15csp411927mag; Thu, 22 Jan 2026 05:31:11 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCXDJ2ek5LU6cAalCafhlTueAHmsCM91LmUHW2XWg2ebLRA/AekjT5qfxMwA1TnMeuSyZb1JUqKovxM=@openvpn.net X-Received: by 2002:a05:6870:c296:b0:3ec:42d2:66fd with SMTP id 586e51a60fabf-4044c4de713mr10244677fac.51.1769088670998; Thu, 22 Jan 2026 05:31:10 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1769088670; cv=none; d=google.com; s=arc-20240605; b=QptKy6KDWypJ/O4r5dAik2DbSYObKPRIJOLsu+1y2KembxhdRUnpSE4omDQGrG1dqb Ev+bSGN3aVbdRR49xtb8f6h3vnVwxHW6J4aPY2byyqTMdVd0/Bdco7Rn2HsAHJwrcheN mdL6VN3zPriFTPiTWYP6D6w80Lq6dS6VWM1ZmrA3iW2aU+6ytzfw2YWvUklRzkcQnggU yK4EAiQGHFTh0ZXfd2j538ZTlJIIf9AK53YTMIgu8D1sTyfVHA8mRBWxubbPVisX0uRR PLFC2WlVmpIvOFijgR/DYDW5dkgombQxSk1iHKt3cmkTPhoMitTJnK/Ko6WtGU0nzgOV 7iuw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=errors-to:content-transfer-encoding:cc:list-subscribe:list-help :list-post:list-archive:list-unsubscribe:list-id:precedence:subject :mime-version:references:in-reply-to:message-id:date:to:from :dkim-signature:dkim-signature:dkim-signature:dkim-signature; bh=40n8AbiE5RRcnUtgYbnrUulMl2QNZhw9lTPtVNG3JlU=; fh=CfxSpwd5kfiMJoL3kcov7PTxVKT7pGe/79idnx9XlBs=; b=SBG202cmOK6CR7GKALQpOliSi5Oe4ExqOp/7nL/59R8wbbi89lfA/1ef1kTmF6VT76 GqyRC+Kcy78MrShdl42mn6+u2a7uW3EpoD5BgPgxgOcX2Jhx84RaGB+8rfhSukqvyK5y qSctJNwCVQhpIT9Y+RRXBJYr/g0TzLmX4uL4C2o0jSNZYI5TPI+aYr9FxewJ4qAUvHrb 8wSg9HkffnS/WL1gxmEbCwDlfG9/3uypIS73URWurESe6NTmr4aKP1NqJkX3rHeDDeoj e8/sN42jfsAnE26/gVoZ5FGLyAuCtlcHQ8HMBL3FB8uUAKv3JrlUvIiB08NU+LBE03M2 r/Lg==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@lists.sourceforge.net header.s=beta header.b=Fln+v502; dkim=neutral (body hash did not verify) header.i=@sourceforge.net header.s=x header.b=MLM4lwTG; dkim=neutral (body hash did not verify) header.i=@sf.net header.s=x header.b=A7PrkX5f; dkim=neutral (body hash did not verify) header.i=@lichtenheld.com header.s=MBO0001 header.b=eUY2+Cg8; spf=pass (google.com: domain of openvpn-devel-bounces@lists.sourceforge.net designates 216.105.38.7 as permitted sender) smtp.mailfrom=openvpn-devel-bounces@lists.sourceforge.net Received: from lists.sourceforge.net (lists.sourceforge.net. [216.105.38.7]) by mx.google.com with ESMTPS id 586e51a60fabf-4044be0431dsi13436999fac.293.2026.01.22.05.31.10 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 22 Jan 2026 05:31:10 -0800 (PST) Received-SPF: pass (google.com: domain of openvpn-devel-bounces@lists.sourceforge.net designates 216.105.38.7 as permitted sender) client-ip=216.105.38.7; Authentication-Results: mx.google.com; dkim=pass header.i=@lists.sourceforge.net header.s=beta header.b=Fln+v502; dkim=neutral (body hash did not verify) header.i=@sourceforge.net header.s=x header.b=MLM4lwTG; dkim=neutral (body hash did not verify) header.i=@sf.net header.s=x header.b=A7PrkX5f; dkim=neutral (body hash did not verify) header.i=@lichtenheld.com header.s=MBO0001 header.b=eUY2+Cg8; spf=pass (google.com: domain of openvpn-devel-bounces@lists.sourceforge.net designates 216.105.38.7 as permitted sender) smtp.mailfrom=openvpn-devel-bounces@lists.sourceforge.net DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.sourceforge.net; s=beta; h=Content-Transfer-Encoding:Content-Type:Cc: List-Subscribe:List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id: Subject:MIME-Version:References:In-Reply-To:Message-ID:Date:To:From:Sender: Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender :Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=40n8AbiE5RRcnUtgYbnrUulMl2QNZhw9lTPtVNG3JlU=; b=Fln+v502q1dhsmlIw7Re1ou/0N htV07ClAW9C1JPUuAesw9Oec/SSTeN1JuXcbrr9wJfzaTJ7w43XlCMv+JfKNPTau0b20VfbazM9Xr JLnfxGZSwA7vbf7FNItvqcuh3LlC2GA67EhF2aPqmFJaSt5bj0phxBnQ7+ZrY0iB81AA=; Received: from [127.0.0.1] (helo=sfs-ml-1.v29.lw.sourceforge.com) by sfs-ml-1.v29.lw.sourceforge.com with esmtp (Exim 4.95) (envelope-from ) id 1vium9-0008AE-F3; Thu, 22 Jan 2026 13:31:05 +0000 Received: from [172.30.29.66] (helo=mx.sourceforge.net) by sfs-ml-1.v29.lw.sourceforge.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1vium5-00089u-Ie for openvpn-devel@lists.sourceforge.net; Thu, 22 Jan 2026 13:31:03 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sourceforge.net; s=x; h=Content-Transfer-Encoding:MIME-Version:References: In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To:Content-Type: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=jNgn1vRJaN/MlcJf6EU2cXy/2hb/AlBZUTugB74Kk78=; b=MLM4lwTGki/V8pBnamh1fdvunq MJMm3nbbyGCgezQ7UJJsZkT+joLlt9IpNNRnL4HyzFnr0IRrABAxPDAKngdXif4tTrgZmN/jH8Tvq TbPsc9Ji6744scmsw5TEohnmx24K4AWRxK1HmNKOt33g5noLbppjGJ7YhCEMdvIwmKqo=; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sf.net; s=x ; h=Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID: Date:Subject:Cc:To:From:Sender:Reply-To:Content-Type:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=jNgn1vRJaN/MlcJf6EU2cXy/2hb/AlBZUTugB74Kk78=; b=A7PrkX5fM+6OBDauZlH1eVD/bD HboT++K25s5L1Bty9nxr+UURFEZ+BMfzX8RutcZF4eTOHlEFa7HDYEXRs1cL4v6gh0OgtI7ifDwjB fdclQ2+bHjmPLsIy72blJUxcuRAYpVKXS2TP7WScQBdgkZJYqfMz/2gLZ5FyT5KeIBt8=; Received: from mout-p-201.mailbox.org ([80.241.56.171]) by sfi-mx-2.v28.lw.sourceforge.com with esmtps (TLS1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.95) id 1vium4-0000YE-AV for openvpn-devel@lists.sourceforge.net; Thu, 22 Jan 2026 13:31:01 +0000 Received: from smtp202.mailbox.org (smtp202.mailbox.org [IPv6:2001:67c:2050:b231:465::202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-201.mailbox.org (Postfix) with ESMTPS id 4dxhlb4B8sz9tyg; Thu, 22 Jan 2026 14:30:51 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lichtenheld.com; s=MBO0001; t=1769088651; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=jNgn1vRJaN/MlcJf6EU2cXy/2hb/AlBZUTugB74Kk78=; b=eUY2+Cg8fuN1MmuP2tsmqxzP5+jgoZusg1ygwdCBXDbzFwQBK+6dvCGybRz8I/IfUUZ39B Ex0d0n7nua6vj7cO+Uci6b5NqkQIH3f4YmQ1QCOu5WMEvrghvmjjVYcTlB0xxYQvg8IhB6 audxnb/dH/vwXo4JZtSjQkSs6/yvAmSoGuXLS22tiVxuqQ4fw0VPa732vST+u1n0zyOZy2 4InHHif2XXN0NOcTkxw0/1H7MYmbaTZm99lIrI0NKpmfJUx1OCN9lpvx8fHJOzfW5S+ReS omxeMeay5iahzd3P3o0TOYBldvkk6JcPP/GP1+ccQ/ifaupUTFk2QR21UGRWRA== Authentication-Results: outgoing_mbo_mout; dkim=none; spf=pass (outgoing_mbo_mout: domain of frank@lichtenheld.com designates 2001:67c:2050:b231:465::202 as permitted sender) smtp.mailfrom=frank@lichtenheld.com From: Frank Lichtenheld To: openvpn-devel@lists.sourceforge.net Date: Thu, 22 Jan 2026 14:30:50 +0100 Message-ID: <20260122133050.117000-1-frank@lichtenheld.com> In-Reply-To: References: MIME-Version: 1.0 X-Rspamd-Queue-Id: 4dxhlb4B8sz9tyg X-Spam-Score: -0.2 (/) X-Spam-Report: Spam detection software, running on the system "sfi-spamd-2.hosts.colo.sdot.me", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Mostly just use better types. And in some places remove overloading of variables with nicer C11 code. Change-Id: Idbb5c0fff759a2e645a8b4f62266509e32e3a44e Signed-off-by: Frank Lichtenheld Acked-by: Arne Schwabe Gerrit URL: https://gerrit.openvpn.net/c [...] Content analysis details: (-0.2 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain X-Headers-End: 1vium4-0000YE-AV Subject: [Openvpn-devel] [PATCH v3] route: Fix conversion warnings on BSDs X-BeenThere: openvpn-devel@lists.sourceforge.net X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Arne Schwabe Errors-To: openvpn-devel-bounces@lists.sourceforge.net X-getmail-retrieved-from-mailbox: Inbox X-GMAIL-THRID: =?utf-8?q?1855023922261636763?= X-GMAIL-MSGID: =?utf-8?q?1855023922261636763?= Mostly just use better types. And in some places remove overloading of variables with nicer C11 code. Change-Id: Idbb5c0fff759a2e645a8b4f62266509e32e3a44e Signed-off-by: Frank Lichtenheld Acked-by: Arne Schwabe Gerrit URL: https://gerrit.openvpn.net/c/openvpn/+/1481 --- This change was reviewed on Gerrit and approved by at least one developer. I request to merge it to master. Gerrit URL: https://gerrit.openvpn.net/c/openvpn/+/1481 This mail reflects revision 3 of this Change. Acked-by according to Gerrit (reflected above): Arne Schwabe diff --git a/src/openvpn/route.c b/src/openvpn/route.c index d90c84b..93f61a1 100644 --- a/src/openvpn/route.c +++ b/src/openvpn/route.c @@ -1762,11 +1762,6 @@ return (status != RTA_ERROR); } -#if defined(__GNUC__) || defined(__clang__) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wconversion" -#endif - void route_ipv6_clear_host_bits(struct route_ipv6 *r6) { @@ -1833,7 +1828,7 @@ if (r6->iface != NULL && gateway_needed && IN6_IS_ADDR_LINKLOCAL(&r6->gateway)) /* fe80::...%intf */ { - int len = strlen(gateway) + 1 + strlen(r6->iface) + 1; + size_t len = strlen(gateway) + 1 + strlen(r6->iface) + 1; char *tmp = gc_malloc(len, true, &gc); snprintf(tmp, len, "%s%%%s", gateway, r6->iface); gateway = tmp; @@ -2253,7 +2248,7 @@ if (r6->iface != NULL && gateway_needed && IN6_IS_ADDR_LINKLOCAL(&r6->gateway)) /* fe80::...%intf */ { - int len = strlen(gateway) + 1 + strlen(r6->iface) + 1; + size_t len = strlen(gateway) + 1 + strlen(r6->iface) + 1; char *tmp = gc_malloc(len, true, &gc); snprintf(tmp, len, "%s%%%s", gateway, r6->iface); gateway = tmp; @@ -2374,10 +2369,6 @@ net_ctx_reset(ctx); } -#if defined(__GNUC__) || defined(__clang__) -#pragma GCC diagnostic pop -#endif - /* * The --redirect-gateway option requires OS-specific code below * to get the current default gateway. @@ -3354,19 +3345,19 @@ #define NEXTADDR(w, u) \ if (rtm_addrs & (w)) \ { \ - l = sizeof(u); \ + size_t l = sizeof(u); \ memmove(cp, &(u), l); \ cp += ROUNDUP(l); \ } #define ADVANCE(x, n) (x += ROUNDUP(sizeof(struct sockaddr_in))) #else /* if defined(TARGET_SOLARIS) */ -#define NEXTADDR(w, u) \ - if (rtm_addrs & (w)) \ - { \ - l = ((struct sockaddr *)&(u))->sa_len; \ - memmove(cp, &(u), l); \ - cp += ROUNDUP(l); \ +#define NEXTADDR(w, u) \ + if (rtm_addrs & (w)) \ + { \ + size_t l = ((struct sockaddr *)&(u))->sa_len; \ + memmove(cp, &(u), l); \ + cp += ROUNDUP(l); \ } #define ADVANCE(x, n) (x += ROUNDUP((n)->sa_len)) @@ -3374,19 +3365,13 @@ #define max(a, b) ((a) > (b) ? (a) : (b)) -#if defined(__GNUC__) || defined(__clang__) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wconversion" -#endif - void get_default_gateway(struct route_gateway_info *rgi, in_addr_t dest, openvpn_net_ctx_t *ctx) { struct gc_arena gc = gc_new(); struct rtmsg m_rtmsg; int sockfd = -1; - int seq, l, pid, rtm_addrs; - unsigned int i; + int rtm_addrs; struct sockaddr so_dst, so_mask; char *cp = m_rtmsg.m_space; struct sockaddr *gate = NULL, *ifp = NULL, *sa; @@ -3397,8 +3382,8 @@ CLEAR(*rgi); /* setup data to send to routing socket */ - pid = getpid(); - seq = 0; + const int pid = getpid(); + int seq = 0; #ifdef TARGET_OPENBSD rtm_addrs = RTA_DST | RTA_NETMASK; /* Kernel refuses RTA_IFP */ #else @@ -3415,7 +3400,7 @@ rtm.rtm_version = RTM_VERSION; rtm.rtm_seq = ++seq; #ifdef TARGET_OPENBSD - rtm.rtm_tableid = getrtable(); + rtm.rtm_tableid = (u_short)getrtable(); #endif rtm.rtm_addrs = rtm_addrs; @@ -3430,7 +3415,8 @@ NEXTADDR(RTA_DST, so_dst); NEXTADDR(RTA_NETMASK, so_mask); - rtm.rtm_msglen = l = cp - (char *)&m_rtmsg; + /* sizeof(struct rt_msghdr) + padding */ + rtm.rtm_msglen = (u_short)(cp - (char *)&m_rtmsg); /* transact with routing socket */ sockfd = socket(PF_ROUTE, SOCK_RAW, 0); @@ -3439,24 +3425,25 @@ msg(M_WARN, "GDG: socket #1 failed"); goto done; } - if (write(sockfd, (char *)&m_rtmsg, l) < 0) + if (write(sockfd, (char *)&m_rtmsg, rtm.rtm_msglen) < 0) { msg(M_WARN | M_ERRNO, "GDG: problem writing to routing socket"); goto done; } + ssize_t ret; do { - l = read(sockfd, (char *)&m_rtmsg, sizeof(m_rtmsg)); - } while (l > 0 && (rtm.rtm_seq != seq || rtm.rtm_pid != pid)); + ret = read(sockfd, (char *)&m_rtmsg, sizeof(m_rtmsg)); + } while (ret > 0 && (rtm.rtm_seq != seq || rtm.rtm_pid != pid)); close(sockfd); sockfd = -1; /* extract return data from routing socket */ rtm_aux = &rtm; - cp = ((char *)(rtm_aux + 1)); + cp = (char *)(rtm_aux + 1); if (rtm_aux->rtm_addrs) { - for (i = 1; i; i <<= 1) + for (unsigned int i = 1; i; i <<= 1) { if (i & rtm_aux->rtm_addrs) { @@ -3604,8 +3591,7 @@ { struct rtmsg m_rtmsg; int sockfd = -1; - int seq, l, pid, rtm_addrs; - unsigned int i; + int rtm_addrs; struct sockaddr_in6 so_dst, so_mask; char *cp = m_rtmsg.m_space; struct sockaddr *gate = NULL, *ifp = NULL, *sa; @@ -3614,8 +3600,8 @@ CLEAR(*rgi6); /* setup data to send to routing socket */ - pid = getpid(); - seq = 0; + const int pid = getpid(); + int seq = 0; #ifdef TARGET_OPENBSD rtm_addrs = RTA_DST | RTA_NETMASK; /* Kernel refuses RTA_IFP */ #else @@ -3632,7 +3618,7 @@ rtm.rtm_version = RTM_VERSION; rtm.rtm_seq = ++seq; #ifdef TARGET_OPENBSD - rtm.rtm_tableid = getrtable(); + rtm.rtm_tableid = (u_short)getrtable(); #endif so_dst.sin6_family = AF_INET6; @@ -3656,7 +3642,8 @@ NEXTADDR(RTA_DST, so_dst); NEXTADDR(RTA_NETMASK, so_mask); - rtm.rtm_msglen = l = cp - (char *)&m_rtmsg; + /* sizeof(struct rt_msghdr) + padding */ + rtm.rtm_msglen = (u_short)(cp - (char *)&m_rtmsg); /* transact with routing socket */ sockfd = socket(PF_ROUTE, SOCK_RAW, 0); @@ -3665,26 +3652,26 @@ msg(M_WARN, "GDG6: socket #1 failed"); goto done; } - if (write(sockfd, (char *)&m_rtmsg, l) < 0) + if (write(sockfd, (char *)&m_rtmsg, rtm.rtm_msglen) < 0) { msg(M_WARN | M_ERRNO, "GDG6: problem writing to routing socket"); goto done; } - + ssize_t ret; do { - l = read(sockfd, (char *)&m_rtmsg, sizeof(m_rtmsg)); - } while (l > 0 && (rtm.rtm_seq != seq || rtm.rtm_pid != pid)); + ret = read(sockfd, (char *)&m_rtmsg, sizeof(m_rtmsg)); + } while (ret > 0 && (rtm.rtm_seq != seq || rtm.rtm_pid != pid)); close(sockfd); sockfd = -1; /* extract return data from routing socket */ rtm_aux = &rtm; - cp = ((char *)(rtm_aux + 1)); + cp = (char *)(rtm_aux + 1); if (rtm_aux->rtm_addrs) { - for (i = 1; i; i <<= 1) + for (unsigned int i = 1; i; i <<= 1) { if (i & rtm_aux->rtm_addrs) { @@ -3752,10 +3739,6 @@ } } -#if defined(__GNUC__) || defined(__clang__) -#pragma GCC diagnostic pop -#endif - #undef max #elif defined(TARGET_HAIKU)