From nobody Tue Jul 23 20:26:04 2024 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4WT7vd19cwz5QMQc; Tue, 23 Jul 2024 20:26:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (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 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4WT7vd07GXz4J00; Tue, 23 Jul 2024 20:26:05 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1721766365; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=TisWMLq5q9F4Jtl/7HJjmNfAYk2nWlFS12k1MvRx/z4=; b=xNsE6HJhySgm6QVr1fdPVPlaWXDO8NNo3QxN4mw9V/TZSCyqLHY4OgDdK/OuxWfAlxRMga OwD62zlY6s/oUccDGkhzZfP5tjQ91MDpNkYYfVfzdNP2Aygvl/OVzxHAU/rJnPX8+VN04w UeZXdxm4AsqRzEuKnRCjBpw8DiPq1yJXGXI381h7Q9OlSv8sPfBIlcVN/YSoDOhiKBfADd EXmyS4OgEknIZuOR3QTcPqsHbrQC5dhors9lIsWe9qPAFjUqneVwdVuGs10XkUzAD4l02k VPIthWMBdCCI9hkdxHvwzb8EvCPPJV1tyBaYrebqPPm7A9zYkE7mrTc9X8fJBw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1721766365; a=rsa-sha256; cv=none; b=lSQGiyagR8uod+HovCEtxjGHKlKdezosxq0sED87BhLQ/uqqncbb/32jB9UDPjqxbGJ/oh /D5p8QymQRUZNam6fxR+WMQtsP89Kek43tGyXIzM+E63tcPB14qeN1McnaB3zYwstCh8+m vrZv+HTma0AcMTCa5fyokbVf11IqwdxgzPvqYurb+8thokT7HH3lFqh0A54VJRgiiXJhwj IAxmLC5dw/XGi5CmwVoM0I4pH27DRHGtmUxXg+F7+9jI0r+SrOEY8fX3nqnq1gD7TorxaA x8rshDlqAD9o4NSpUwP7fy+kTIwQ9WFAL+xUSK4bkDJY4cjgE6mOdr4zqnKJnw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1721766365; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=TisWMLq5q9F4Jtl/7HJjmNfAYk2nWlFS12k1MvRx/z4=; b=gzm5//wKOZteT3smHKWDKuYPiH1VIY0rlDcrT/VZIv1SgZGV3+REBz4xS+10fa4EZ4sbLd KifrJGawQx2WiB8nWW03KzofKCWqSYg1ho7orNR8IcCrwX/+z39j05tFsFZKm6rf0Hf7JU shpy1SMXEZ0AK2JUMf/BlXmKjvnyh/X/lMC+Ru2iW33SVWf7gMs+ZomaD1mFuWXVvoh1KE Q6N5kj6MKIbp35jvmfnhC0VqBR0AcxFth1LrCPYFl710J9GGCu4zTrCmE59cKIezQ6J1UV lUgflZole2qSsXpcDDdIR3xEZA0nUm7ur1IJCjDngZzeLs15WBIGvxRwzoXYZg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4WT7vc6kCRzj2F; Tue, 23 Jul 2024 20:26:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 46NKQ4f2036545; Tue, 23 Jul 2024 20:26:04 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 46NKQ4M1036542; Tue, 23 Jul 2024 20:26:04 GMT (envelope-from git) Date: Tue, 23 Jul 2024 20:26:04 GMT Message-Id: <202407232026.46NKQ4M1036542@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kyle Evans Subject: git: 158f319428c1 - main - route: avoid overlapping strcpy List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 158f319428c10143ce2ffe766416207c75578931 Auto-Submitted: auto-generated The branch main has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=158f319428c10143ce2ffe766416207c75578931 commit 158f319428c10143ce2ffe766416207c75578931 Author: Kyle Evans AuthorDate: 2024-07-23 20:25:46 +0000 Commit: Kyle Evans CommitDate: 2024-07-23 20:25:56 +0000 route: avoid overlapping strcpy Passing overlapping buffers to strcpy yields an undefined result, so let's avoid it. The copy doesn't really need to happen anyways, we can just point to the domain part of the hostname. This was discovered with _FORTIFY_SOURCE. Sponsored by: Klara, Inc. Sponsored by: Stormshield Reviewed by: allanjude, emaste, imp, melifaro (all previous version) Differential Revision: https://reviews.freebsd.org/D32615 --- sbin/route/route.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/sbin/route/route.c b/sbin/route/route.c index 03844308fe84..cea63df3aa11 100644 --- a/sbin/route/route.c +++ b/sbin/route/route.c @@ -94,8 +94,8 @@ static u_long rtm_inits; static uid_t uid; static int defaultfib; static int numfibs; -static char domain[MAXHOSTNAMELEN + 1]; -static bool domain_initialized; +static char domain_storage[MAXHOSTNAMELEN + 1]; +static const char *domain; static char rt_line[NI_MAXHOST]; static char net_line[MAXHOSTNAMELEN + 1]; @@ -581,14 +581,16 @@ routename(struct sockaddr *sa) const char *cp; int n; - if (!domain_initialized) { - domain_initialized = true; - if (gethostname(domain, MAXHOSTNAMELEN) == 0 && - (cp = strchr(domain, '.'))) { - domain[MAXHOSTNAMELEN] = '\0'; - (void)strcpy(domain, cp + 1); - } else - domain[0] = '\0'; + if (domain == NULL) { + if (gethostname(domain_storage, + sizeof(domain_storage) - 1) == 0 && + (cp = strchr(domain_storage, '.')) != NULL) { + domain_storage[sizeof(domain_storage) - 1] = '\0'; + domain = cp + 1; + } else { + domain_storage[0] = '\0'; + domain = domain_storage; + } } /* If the address is zero-filled, use "default". */