From patchwork Sun Jan 1 21:51:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Selva Nair X-Patchwork-Id: 2964 Return-Path: Delivered-To: patchwork@openvpn.net Received: by 2002:a05:7300:c95:b0:82:e4b3:40a0 with SMTP id p21csp6018228dyk; Sun, 1 Jan 2023 13:52:41 -0800 (PST) X-Google-Smtp-Source: AMrXdXvXPsOsUwdlPcAbWJ20pKztOrtpAMnRsRDW+7d1xRwUvZwf6Xnu0syd0ZWvbbazoRAWEdrr X-Received: by 2002:a17:903:22c8:b0:188:de22:324b with SMTP id y8-20020a17090322c800b00188de22324bmr74043976plg.6.1672609960855; Sun, 01 Jan 2023 13:52:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1672609960; cv=none; d=google.com; s=arc-20160816; b=b5aoWll8fXfiqMmfSTgjS/mh/LxBe3VOb0Hvaxptqr08BqoCygmS4akOOGAc39CMhr Hrrow7fiQvjX2EXsxonUEavUcRwDutKXYRA58L/+S+ev88FigTdaWXkQHs5KkH4xQ9OZ gatvhe9rFx887oFAvXvOFutlMMbA74+jgFjB31cjCypVJEQES4LRC9lRhHhMeLowOrpx nsuVZEIyyFpH7OKcXYGk9EoXLaMD8X4R9c+yGEpS9ybBb3Xu0AmhxHEl6U2DY7nE4M6d i7BtG/kGJqAeIQUjrKjR+HBnvcfL4RRP+vcgMPYQtksE5vr/IVV9EWIm37Glevo9vFvL +/Sw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:content-transfer-encoding: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; bh=CP3h2CrbObMEAhbbrxTcwfpWLQjnLo9D7WL6I/uD14k=; b=WlM0wa4Ue8iUU8Ue1Wb9GbW60kI61+cuXTZcNWJ8PYsmlw6j63a2LQGof3XU/uHlan BPXAIH/yq4K5LHxbQIVVzmpA9aai3jV0dApXKMi7EFqdbI7Ne5E4hKgVuAfC2HvjJ6gu 3CNiVfi7bI+eevjmnzMwJjMfCgb1eNdvC0+mu6+YxBNZHZbNQul+Nqd+cRzcFpp3+65N GCaHN0orDHFwFouEsfg+P+7fbO9vGwFdqyISEOPurHBBnguEWmj05IlMDwEy9ss/RAnk b0+3SNu50wi6uYrtHyoeAaAwU3zIqhtH+S+u9qQ+QO84Bz79MvX661/XF/ED0H9p6xlH +rVg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@sourceforge.net header.s=x header.b=Uwoz3s1S; dkim=neutral (body hash did not verify) header.i=@sf.net header.s=x header.b=cQV3YDSV; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=QkcPeDgR; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from lists.sourceforge.net (lists.sourceforge.net. [216.105.38.7]) by mx.google.com with ESMTPS id iz17-20020a170902ef9100b00188e045470csi25666374plb.542.2023.01.01.13.52.40 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 01 Jan 2023 13:52:40 -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=neutral (body hash did not verify) header.i=@sourceforge.net header.s=x header.b=Uwoz3s1S; dkim=neutral (body hash did not verify) header.i=@sf.net header.s=x header.b=cQV3YDSV; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=QkcPeDgR; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.0.1] (helo=sfs-ml-4.v29.lw.sourceforge.com) by sfs-ml-4.v29.lw.sourceforge.com with esmtp (Exim 4.95) (envelope-from ) id 1pC6FA-0003jI-K5; Sun, 01 Jan 2023 21:51:48 +0000 Received: from [172.30.20.202] (helo=mx.sourceforge.net) by sfs-ml-4.v29.lw.sourceforge.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1pC6F8-0003j8-Nk for openvpn-devel@lists.sourceforge.net; Sun, 01 Jan 2023 21:51:46 +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=gy3UAjSBG38JiuVc4p6mppPDN7siZWCBNdxg3JvdyhA=; b=Uwoz3s1SuwDU0Ihyg5tMpVdRwo kYs5nKwC47RdaeYvqE87pz2YKzwmZNTnfM36gQbyoQ5h/r2qHInVu+iVMy+a+IHL/Ox847O3IxRPy jlaDHCQGqvaZPzZ7YFX13zYxZDSTRYGCasto+Cc1IPTmBSdLxKe1zD4b1zo1zYOrbkm4=; 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=gy3UAjSBG38JiuVc4p6mppPDN7siZWCBNdxg3JvdyhA=; b=cQV3YDSV5cufZhX1o1MIDvMVO8 WqStO9z8pFsmM5b5lg6mLJzpQjJYlcCUVel2/gePq6LJYGuv2Ymkz28UMMeZ9aEop6Q7b6ykHxpCp ME5SbClSaShKU0yP7tWhDOxRIrx38HVMTKotqxQuGjNH0TrpKp1YHLnw4lh3K4pJytj8=; Received: from mail-io1-f44.google.com ([209.85.166.44]) by sfi-mx-1.v28.lw.sourceforge.com with esmtps (TLS1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.95) id 1pC6F8-001bzN-46 for openvpn-devel@lists.sourceforge.net; Sun, 01 Jan 2023 21:51:46 +0000 Received: by mail-io1-f44.google.com with SMTP id i83so14182832ioa.11 for ; Sun, 01 Jan 2023 13:51:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=gy3UAjSBG38JiuVc4p6mppPDN7siZWCBNdxg3JvdyhA=; b=QkcPeDgRVdx0UhqOqPjf+BqF82f2s8QOMpzi2xyadVDeKV1zmTmeFjCVW9oQgZsvDk 3QBlG6INGvcxfodN15Zrzicn2B7SRc+Nvib89Wj2N5963zgz2YI7L+bdBZ1c/iHaCi3/ QtMXr5223UdMTfy1jXMoks5yF7uok0ENiHv02eh1kE+R90Nyax54FhJvNkmbEnKOmetk ehLCglIhPzWUX/zCioOM9A2B2kkygeXfvNNUu3evUalEh0bBcTpCPggyVthYFg8LvKKr KQBQGD/Dl08F1qOA0M+iXWcxEM8nk3g3PFR9ERTDlyxO0B2bCNyisNK4ZePe6+yUiIgn vFBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gy3UAjSBG38JiuVc4p6mppPDN7siZWCBNdxg3JvdyhA=; b=1zdi1qReCmFHpIu+SQiMUAVSJQWlb6tFeFotFATVeYdjgjnf3EiKuwiL8bj4msSLsQ IFQmkZo/y4+tzqXnyeyRDBbNpA0PgHoZ7F/sEGNCd3/Y/tXf6d92uequ3IhOQ5wBnl2b cgN6TToK3heGdjPUhMTAvtrWyo6m8IEPxhcQutpGKBnNcpx74oseznMQTw2gcCAQ9Xy8 m5hsdgMtGaA44VEUz8qCeURRgWZGJ0UVVF2JyLkfYMNpcJxehLDjvyQmLuMxJthWNQuM jI3Iz/OGzHCoLJv8eRrowbDmYgwCdPpCvcbkGUE7hD0IdUiks3nwhiZrjwfC0wuQjrZi lP8g== X-Gm-Message-State: AFqh2kqxwbfNWl3InDlne8nfB/t2d8PQ5YTFBfKhPzY3IzE9yyZ7LJbL jrm4RhQvBpFdEdvgQ3BEYJSbh9YM0fJwJg== X-Received: by 2002:a6b:7808:0:b0:6db:3123:261 with SMTP id j8-20020a6b7808000000b006db31230261mr4932746iom.2.1672609900213; Sun, 01 Jan 2023 13:51:40 -0800 (PST) Received: from uranus.sansel.ca (bras-vprn-tnhlon4053w-lp130-01-70-51-222-66.dsl.bell.ca. [70.51.222.66]) by smtp.gmail.com with ESMTPSA id w11-20020a022a0b000000b0038a44dbbd8fsm8975359jaw.123.2023.01.01.13.51.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 01 Jan 2023 13:51:39 -0800 (PST) From: selva.nair@gmail.com To: openvpn-devel@lists.sourceforge.net Date: Sun, 1 Jan 2023 16:51:06 -0500 Message-Id: <20230101215109.1521549-3-selva.nair@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230101215109.1521549-1-selva.nair@gmail.com> References: <20230101215109.1521549-1-selva.nair@gmail.com> MIME-Version: 1.0 X-Spam-Score: -0.2 (/) X-Spam-Report: Spam detection software, running on the system "util-spamd-1.v13.lw.sourceforge.com", 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: From: Selva Nair Pass in sig_info struct to use register signal instead of modifying signal_received. No functional changes though some may be warranted. Questions: - Why are we overwriting SIGUSR1 in this function? - Why the special interrupted syscall treatment for getaddrinfo? Its not a syscall, is [...] Content analysis details: (-0.2 points, 6.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider [selva.nair[at]gmail.com] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [209.85.166.44 listed in wl.mailspike.net] -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [209.85.166.44 listed in list.dnswl.org] -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -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 X-Headers-End: 1pC6F8-001bzN-46 Subject: [Openvpn-devel] [PATCH 2/5] Refactor signal handling in openvpn_getaddrinfo 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: , Errors-To: openvpn-devel-bounces@lists.sourceforge.net X-getmail-retrieved-from-mailbox: Inbox X-GMAIL-THRID: =?utf-8?q?1753858662284961183?= X-GMAIL-MSGID: =?utf-8?q?1753858662284961183?= From: Selva Nair Pass in sig_info struct to use register signal instead of modifying signal_received. No functional changes though some may be warranted. Questions: - Why are we overwriting SIGUSR1 in this function? - Why the special interrupted syscall treatment for getaddrinfo? Its not a syscall, is it? Signed-off-by: Selva Nair Acked-by: Gert Doering --- src/openvpn/socket.c | 31 ++++++++++++++++--------------- src/openvpn/socket.h | 4 ++-- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/src/openvpn/socket.c b/src/openvpn/socket.c index 273f378e..faaa2748 100644 --- a/src/openvpn/socket.c +++ b/src/openvpn/socket.c @@ -67,7 +67,7 @@ sf2gaf(const unsigned int getaddr_flags, static int get_addr_generic(sa_family_t af, unsigned int flags, const char *hostname, void *network, unsigned int *netbits, - int resolve_retry_seconds, volatile int *signal_received, + int resolve_retry_seconds, struct signal_info *sig_info, int msglevel) { char *endp, *sep, *var_host = NULL; @@ -130,7 +130,7 @@ get_addr_generic(sa_family_t af, unsigned int flags, const char *hostname, } ret = openvpn_getaddrinfo(flags & ~GETADDR_HOST_ORDER, var_host, NULL, - resolve_retry_seconds, signal_received, af, &ai); + resolve_retry_seconds, sig_info, af, &ai); if ((ret == 0) && network) { struct in6_addr *ip6; @@ -183,13 +183,13 @@ getaddr(unsigned int flags, const char *hostname, int resolve_retry_seconds, bool *succeeded, - volatile int *signal_received) + struct signal_info *sig_info) { in_addr_t addr; int status; status = get_addr_generic(AF_INET, flags, hostname, &addr, NULL, - resolve_retry_seconds, signal_received, + resolve_retry_seconds, sig_info, M_WARN); if (status==0) { @@ -432,13 +432,13 @@ openvpn_getaddrinfo(unsigned int flags, const char *hostname, const char *servname, int resolve_retry_seconds, - volatile int *signal_received, + struct signal_info *sig_info, int ai_family, struct addrinfo **res) { struct addrinfo hints; int status; - int sigrec = 0; + struct signal_info sigrec = {0}; int msglevel = (flags & GETADDR_FATAL) ? M_FATAL : D_RESOLVE_ERRORS; struct gc_arena gc = gc_new(); const char *print_hostname; @@ -464,9 +464,9 @@ openvpn_getaddrinfo(unsigned int flags, } if ((flags & (GETADDR_FATAL_ON_SIGNAL|GETADDR_WARN_ON_SIGNAL)) - && !signal_received) + && !sig_info) { - signal_received = &sigrec; + sig_info = &sigrec; } /* try numeric ipv6 addr first */ @@ -561,17 +561,18 @@ openvpn_getaddrinfo(unsigned int flags, flags, hints.ai_family, hints.ai_socktype); status = getaddrinfo(hostname, servname, &hints, res); - if (signal_received) + if (sig_info) { - get_signal(signal_received); - if (*signal_received) /* were we interrupted by a signal? */ + get_signal(&sig_info->signal_received); + if (sig_info->signal_received) /* were we interrupted by a signal? */ { - if (*signal_received == SIGUSR1) /* ignore SIGUSR1 */ + /* why are we overwriting SIGUSR1 ? */ + if (sig_info->signal_received == SIGUSR1) /* ignore SIGUSR1 */ { msg(level, "RESOLVE: Ignored SIGUSR1 signal received during " "DNS resolution attempt"); - *signal_received = 0; + signal_reset(sig_info); } else { @@ -638,7 +639,7 @@ openvpn_getaddrinfo(unsigned int flags, } done: - if (signal_received && *signal_received) + if (sig_info && sig_info->signal_received) { int level = 0; if (flags & GETADDR_FATAL_ON_SIGNAL) @@ -1759,7 +1760,7 @@ resolve_remote(struct link_socket *sock, if (status) { status = openvpn_getaddrinfo(flags, sock->remote_host, sock->remote_port, - retry, signal_received, sock->info.af, &ai); + retry, sig_info, sock->info.af, &ai); } if (status == 0) diff --git a/src/openvpn/socket.h b/src/openvpn/socket.h index 05c31b10..92f1af77 100644 --- a/src/openvpn/socket.h +++ b/src/openvpn/socket.h @@ -526,7 +526,7 @@ in_addr_t getaddr(unsigned int flags, const char *hostname, int resolve_retry_seconds, bool *succeeded, - volatile int *signal_received); + struct signal_info *sig_info); /** * Translate an IPv6 addr or hostname from string form to in6_addr @@ -538,7 +538,7 @@ int openvpn_getaddrinfo(unsigned int flags, const char *hostname, const char *servname, int resolve_retry_seconds, - volatile int *signal_received, + struct signal_info *sig_info, int ai_family, struct addrinfo **res);