From debbugs-submit-bounces@debbugs.gnu.org Mon Aug 19 00:39:34 2024 Received: (at submit) by debbugs.gnu.org; 19 Aug 2024 04:39:34 +0000 Received: from localhost ([127.0.0.1]:57327 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sfuB3-0006Tw-Im for submit@debbugs.gnu.org; Mon, 19 Aug 2024 00:39:34 -0400 Received: from lists.gnu.org ([209.51.188.17]:47774) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sfsPb-0003YK-DR for submit@debbugs.gnu.org; Sun, 18 Aug 2024 22:46:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sfsOv-0001Hj-Ug for bug-coreutils@gnu.org; Sun, 18 Aug 2024 22:45:45 -0400 Received: from mx3.gerwinski.de ([2a01:4f8:192:4405::170:59]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sfsOu-0001Zo-3G for bug-coreutils@gnu.org; Sun, 18 Aug 2024 22:45:45 -0400 Received: from pd9f48283.dip0.t-ipconnect.de ([217.244.130.131] helo=mars) by m31.gerwinski.de with esmtpa (Exim 4.96) (envelope-from ) id 1sfsO5-008d1l-13 for bug-coreutils@gnu.org; Mon, 19 Aug 2024 04:44:55 +0200 Received: from frank by mars with local-rmail (Exim 4.96) (envelope-from ) id 1sfsO4-00Fwtf-2j for bug-coreutils@gnu.org; Mon, 19 Aug 2024 04:44:52 +0200 To: bug-coreutils@gnu.org Subject: install: need_copy (for "-C") should use stat instead of lstat From: Frank Heckenbach MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=ISO-8859-1 Message-Id: Date: Mon, 19 Aug 2024 04:44:52 +0200 Received-SPF: pass client-ip=2a01:4f8:192:4405::170:59; envelope-from=f.heckenbach@fh-soft.de; helo=mx3.gerwinski.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.6 (-) X-Debbugs-Envelope-To: submit X-Mailman-Approved-At: Mon, 19 Aug 2024 00:39:31 -0400 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.6 (--) install dereferences symlinks given as sources (and I think that's good). The "-C" option, however, uses lstat rather than stat in need_copy and returns true if !S_ISREG. So the (dereferenced) file will always be copied despite "-C". Even worse, since "-p" cannot be combined with "-C", the installed file will always get a new timestamp which may trigger rebuilds (e.g. if the file is a header) even if nothing was changed, e.g.: % touch a % ln -s a b % install -C b c % ls --time-style=+%T -l total 0 -rw------- 1 frank frank 0 23:46:51 a lrwxrwxrwx 1 frank frank 1 23:46:54 b -> a -rwxr-xr-x 1 frank frank 0 23:46:58 c % install -C b c % ls --time-style=+%T -l total 0 -rw------- 1 frank frank 0 23:46:51 a lrwxrwxrwx 1 frank frank 1 23:46:54 b -> a -rwxr-xr-x 1 frank frank 0 23:47:06 c % install -C b c % ls --time-style=+%T -l total 0 -rw------- 1 frank frank 0 23:46:51 a lrwxrwxrwx 1 frank frank 1 23:46:54 b -> a -rwxr-xr-x 1 frank frank 0 23:47:08 c % I asked Kamil Dudka who implemented "-C" originally and he pointed out that requiring both the files to be regular files was suggested by Jim Meyering in the review: https://lists.gnu.org/archive/html/bug-coreutils/2009-02/msg00106.html However, I don't see a real reason there, only his question: "Have you considered requiring that both files be `regular', too?" I don't know if install didn't dereference symlinks back then, but now that it does, it seems consistent to dereference them in the check as well, i.e. use stat rather than lstat. From debbugs-submit-bounces@debbugs.gnu.org Mon Aug 19 07:50:36 2024 Received: (at 72707-done) by debbugs.gnu.org; 19 Aug 2024 11:50:36 +0000 Received: from localhost ([127.0.0.1]:57799 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sg0u6-0001Qu-I7 for submit@debbugs.gnu.org; Mon, 19 Aug 2024 07:50:36 -0400 Received: from mail-wm1-f52.google.com ([209.85.128.52]:47464) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sg0u4-0001Qa-43 for 72707-done@debbugs.gnu.org; Mon, 19 Aug 2024 07:50:28 -0400 Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-4280bca3960so36980705e9.3 for <72707-done@debbugs.gnu.org>; Mon, 19 Aug 2024 04:49:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1724068121; x=1724672921; darn=debbugs.gnu.org; h=in-reply-to:from:content-language:references:to:subject:user-agent :mime-version:date:message-id:sender:from:to:cc:subject:date :message-id:reply-to; bh=2vVypeaG59Qo1wnWnWFGZxIlrNgT0bH3Wj5yuQw/i/4=; b=j2x2uBi5PymGKtL3oDaF44pzSLXo3E6GCHbhgf3DCctYgvgQYQfaodSGck531zJ0U4 xCXcdQic/FzdlZoveioQtw3nPhHvuVi+kFV1tqw9rYGo+uxxKxyOWKoSH1FNZaK1l4Eo oKJjU5rJDxeiv58kwmiEdVucgOi9kmviv5dlJZmFhx7F4N62NNzm2PHDDjXXq8rsP+7z HM0W/riUD6EHPvV4CSyCmh18QmUbZslyWx+L+JfQpha7cdsyzPeMmy1CUbgINfceIdSA qGFMO5umMLaNWa8R2yPWdX6NFaB+9D9kmMuwxIlK4/COUM+5/d+rWc22qdAkyQVvE0E/ aUsw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724068121; x=1724672921; h=in-reply-to:from:content-language:references:to:subject:user-agent :mime-version:date:message-id:sender:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=2vVypeaG59Qo1wnWnWFGZxIlrNgT0bH3Wj5yuQw/i/4=; b=bWCDI3puJBs0zNdlyeCVzR8av7y51cA6LX+olGBLjF5nJ/xfP234y7xTVjyVXKQIYm CVzlNKpfaDr9SMTUSzqBJfuuXtdonc5ULAYwspHL9xn2MilfMFVCDQNt0DzqdoBQ40o5 E9BZ7kW66cN0TRgEx25Re4lnkWZhKG9dnFRd55lNX/V05vAn9BrxneguuUIykaiOoKuE P1JDN0gJVo15lUQN9ga/csZ3vWX/OHOPZ6OC+9DanhNovBj4pAARCHKPX6yrLC9dxC29 iGhZvw0pMRwEeRaUsbZpckLFC58ZNXnsCAMuc3ESWR/U7swAjG3lP0h8ZyQ7MHt34Lym /Dxg== X-Forwarded-Encrypted: i=1; AJvYcCXYmDOhnvFBMIY64sqM9OOEK5oUENHs93Yyy/q36tklqQxBn4uBIUOcc+6I/7hcI4R+/e+2mWg98u3c2gOQXAT/bv4eGOY/4FiE+A== X-Gm-Message-State: AOJu0YwDz3zp+wSEcLwUS60G4lyplCl0XM118ewO4/eh2WXwit6OCJZ4 /f2K8Up2JkzauQGJIFvRDELBH/ySy+8Jpadcbv8zw5Au9c0R2KuN X-Google-Smtp-Source: AGHT+IFJne8o5yK1Za9Ue+MhKFaA3Jbf3KY35dAcABZO2uO2RgMGiWgc8tPfEHkPZUL/4920Mw5VeQ== X-Received: by 2002:a05:600c:4594:b0:428:1090:cfd4 with SMTP id 5b1f17b1804b1-429ed7da7cemr64826795e9.33.1724068120134; Mon, 19 Aug 2024 04:48:40 -0700 (PDT) Received: from [192.168.1.54] (86-44-211-146-dynamic.agg2.lod.rsl-rtd.eircom.net. [86.44.211.146]) by smtp.googlemail.com with ESMTPSA id ffacd0b85a97d-3719485e2b2sm8429724f8f.33.2024.08.19.04.48.39 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 19 Aug 2024 04:48:39 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------KStBMlFJsl2IIC6BHGOfR2Sh" Message-ID: <974b6ed2-b6e8-48fe-968a-8bc4d3bcd463@draigBrady.com> Date: Mon, 19 Aug 2024 12:48:37 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Beta Subject: Re: bug#72707: install: need_copy (for "-C") should use stat instead of lstat To: Frank Heckenbach , 72707-done@debbugs.gnu.org References: Content-Language: en-US From: =?UTF-8?Q?P=C3=A1draig_Brady?= In-Reply-To: X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 72707-done X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) This is a multi-part message in MIME format. --------------KStBMlFJsl2IIC6BHGOfR2Sh Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 19/08/2024 03:44, Frank Heckenbach wrote: > install dereferences symlinks given as sources (and I think that's > good). The "-C" option, however, uses lstat rather than > stat in need_copy and returns true if !S_ISREG. > > So the (dereferenced) file will always be copied despite "-C". > > Even worse, since "-p" cannot be combined with "-C", the installed > file will always get a new timestamp which may trigger rebuilds > (e.g. if the file is a header) even if nothing was changed, e.g.: > > % touch a > % ln -s a b > % install -C b c > % ls --time-style=+%T -l > total 0 > -rw------- 1 frank frank 0 23:46:51 a > lrwxrwxrwx 1 frank frank 1 23:46:54 b -> a > -rwxr-xr-x 1 frank frank 0 23:46:58 c > % install -C b c > % ls --time-style=+%T -l > total 0 > -rw------- 1 frank frank 0 23:46:51 a > lrwxrwxrwx 1 frank frank 1 23:46:54 b -> a > -rwxr-xr-x 1 frank frank 0 23:47:06 c > % install -C b c > % ls --time-style=+%T -l > total 0 > -rw------- 1 frank frank 0 23:46:51 a > lrwxrwxrwx 1 frank frank 1 23:46:54 b -> a > -rwxr-xr-x 1 frank frank 0 23:47:08 c > % > > I asked Kamil Dudka who implemented "-C" originally and he pointed > out that requiring both the files to be regular files was suggested > by Jim Meyering in the review: > https://lists.gnu.org/archive/html/bug-coreutils/2009-02/msg00106.html > > However, I don't see a real reason there, only his question: > "Have you considered requiring that both files be `regular', too?" > > I don't know if install didn't dereference symlinks back then, but > now that it does, it seems consistent to dereference them in the > check as well, i.e. use stat rather than lstat. I agree with your arguments to change this. I'm not sure if the suggestion above about regular files, was meant to preclude symlinks. Marking this as done, and I'll apply the attached later. thanks, Pádraig --------------KStBMlFJsl2IIC6BHGOfR2Sh Content-Type: text/x-patch; charset=UTF-8; name="install-C-deref.patch" Content-Disposition: attachment; filename="install-C-deref.patch" Content-Transfer-Encoding: base64 RnJvbSA2OTJhZTc0MDkzOWNiMzU2ZDdhMTZjYjFlMTdkOTU5ZTY4ZDFmYTkxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/UD1DMz1BMWRyYWlnPTIwQnJhZHk/ PSA8UEBkcmFpZ0JyYWR5LmNvbT4KRGF0ZTogTW9uLCAxOSBBdWcgMjAyNCAxMjo0MzowOSAr MDEwMApTdWJqZWN0OiBbUEFUQ0hdIGluc3RhbGw6IGRlcmVmZXJlbmNlIHNvdXJjZSBzeW1s aW5rcyB3aGVuIGNvbXBhcmluZwoKKiBORVdTOiBNZW50aW9uIHRoZSBjaGFuZ2UgaW4gYmVo YXZpb3IuCiogc3JjL2luc3RhbGwuYyAobmVlZF9jb3B5KTogcy9sc3RhdC9zdGF0LyBmb3Ig dGhlIHNvdXJjZS4KKiB0ZXN0cy9pbnN0YWxsL2luc3RhbGwtQy5zaDogQWRkIHRlc3QgY2Fz ZXMKKGFuZCBpbXByb3ZlIGV4aXN0aW5nIHRlc3QgY2FzZSB3aGljaCB3YW4ndCB2YWxpZApk dWUgdG8gdGhlIGV4aXN0aW5nIG5vbiBzdGFuZGFyZCBtb2RlcyBvbiB0ZXN0IGZpbGVzKS4K QWRkcmVzc2VzIGh0dHBzOi8vYnVncy5nbnUub3JnLzcyNzA3Ci0tLQogTkVXUyAgICAgICAg ICAgICAgICAgICAgICAgfCAgMyArKysKIHNyYy9pbnN0YWxsLmMgICAgICAgICAgICAgIHwg IDIgKy0KIHRlc3RzL2luc3RhbGwvaW5zdGFsbC1DLnNoIHwgMTIgKysrKysrKysrKystCiAz IGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvTkVXUyBiL05FV1MKaW5kZXggNjVjYzNmZGUwLi5lMWQzZjgyZDEgMTAwNjQ0 Ci0tLSBhL05FV1MKKysrIGIvTkVXUwpAQCAtMjQsNiArMjQsOSBAQCBHTlUgY29yZXV0aWxz IE5FV1MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gb3V0bGluZSAt Ki0KIAogKiogQ2hhbmdlcyBpbiBiZWhhdmlvcgogCisgIGluc3RhbGwgLUMgbm93IGRlcmVm ZXJlbmNlcyBzeW1saW5rIHNvdXJjZXMgd2hlbiBjb21wYXJpbmcsCisgIHJhdGhlciB0aGFu IGFsd2F5cyB0cmVhdGluZyBhcyBkaWZmZXJlbnQgYW5kIHBlcmZvcm1pbmcgdGhlIGNvcHku CisKICAgbHMncyAtZiBvcHRpb24gbm93IHNpbXBseSBhY3RzIGxpa2UgLWFVLCBpbnN0ZWFk IG9mIGFsc28gaWdub3JpbmcKICAgc29tZSBlYXJsaWVyIG9wdGlvbnMuICBGb3IgZXhhbXBs ZSAnbHMgLWZsJyBhbmQgJ2xzIC1sZicgYXJlIG5vdwogICBlcXVpdmFsZW50IGJlY2F1c2Ug LWYgbm8gbG9uZ2VyIGlnbm9yZXMgYW4gZWFybGllciAtbC4gIFRoZSBuZXcKZGlmZiAtLWdp dCBhL3NyYy9pbnN0YWxsLmMgYi9zcmMvaW5zdGFsbC5jCmluZGV4IDkzOWRiOWNkNC4uODVm MmQ5ZTExIDEwMDY0NAotLS0gYS9zcmMvaW5zdGFsbC5jCisrKyBiL3NyYy9pbnN0YWxsLmMK QEAgLTE3Nyw3ICsxNzcsNyBAQCBuZWVkX2NvcHkgKGNoYXIgY29uc3QgKnNyY19uYW1lLCBj aGFyIGNvbnN0ICpkZXN0X25hbWUsCiAgICAgcmV0dXJuIHRydWU7CiAKICAgLyogY29tcGFy ZSBmaWxlcyB1c2luZyBzdGF0ICovCi0gIGlmIChsc3RhdCAoc3JjX25hbWUsICZzcmNfc2Ip ICE9IDApCisgIGlmIChzdGF0IChzcmNfbmFtZSwgJnNyY19zYikgIT0gMCkKICAgICByZXR1 cm4gdHJ1ZTsKIAogICBpZiAoZnN0YXRhdCAoZGVzdF9kaXJmZCwgZGVzdF9yZWxuYW1lLCAm ZGVzdF9zYiwgQVRfU1lNTElOS19OT0ZPTExPVykgIT0gMCkKZGlmZiAtLWdpdCBhL3Rlc3Rz L2luc3RhbGwvaW5zdGFsbC1DLnNoIGIvdGVzdHMvaW5zdGFsbC9pbnN0YWxsLUMuc2gKaW5k ZXggYTZiMzMyZTE0Li5lZTNlZTI0NjcgMTAwNzU1Ci0tLSBhL3Rlc3RzL2luc3RhbGwvaW5z dGFsbC1DLnNoCisrKyBiL3Rlc3RzL2luc3RhbGwvaW5zdGFsbC1DLnNoCkBAIC03OSw4ICs3 OSwxOCBAQCBnaW5zdGFsbCAtQ3YgLW0kbW9kZTMgYSBiID4gb3V0IHx8IGZhaWw9MQogY29t cGFyZSBvdXQgb3V0X2luc3RhbGxlZF9zZWNvbmQgfHwgZmFpbD0xCiAKICMgZmlsZXMgYXJl IG5vdCByZWd1bGFyIGZpbGVzCitnaW5zdGFsbCAtdiAtbSRtb2RlMSBhIGIgPiBvdXQgfHwg ZmFpbD0xICAjIHJlc2V0IHRvIHJlZ3VsYXIgbW9kZQorY29tcGFyZSBvdXQgb3V0X2luc3Rh bGxlZF9zZWNvbmQgfHwgZmFpbD0xCisjIHN5bWxpbmsgc291cmNlIGlzIGFsd2F5cyBkZXJl ZmVyZW5jZWQgKGFuZCBzbyByZWd1bGFyIGhlcmUpCitnaW5zdGFsbCAtdiAtbSRtb2RlMSBh IGQgPiBvdXQgfHwgZmFpbD0xICAjIGNyZWF0ZSByZWd1bGFyIGRlc3QKK2VjaG8gIidhJyAt PiAnZCciID4gb3V0X2luc3RhbGxlZF9maXJzdF9hZCB8fCBmcmFtZXdvcmtfZmFpbHVyZV8K K2NvbXBhcmUgb3V0IG91dF9pbnN0YWxsZWRfZmlyc3RfYWQgfHwgZmFpbD0xCiBsbiAtcyBh IGMgfHwgZnJhbWV3b3JrX2ZhaWx1cmVfCi1sbiAtcyBiIGQgfHwgZnJhbWV3b3JrX2ZhaWx1 cmVfCitnaW5zdGFsbCAtQ3YgLW0kbW9kZTEgYyBkID4gb3V0IHx8IGZhaWw9MQorY29tcGFy ZSBvdXQgb3V0X2VtcHR5IHx8IGZhaWw9MQorIyBzeW1saW5rIChub24gcmVndWxhcikgZGVz dCBpcyBhbHdheXMgcmVwbGFjZWQKK2xuIC1uc2YgYiBkIHx8IGZyYW1ld29ya19mYWlsdXJl XworbHMgLWwgYSBiIGMgZCA+IC90bXAvcGIub3V0CiBnaW5zdGFsbCAtQ3YgLW0kbW9kZTEg YyBkID4gb3V0IHx8IGZhaWw9MQogZWNobyAicmVtb3ZlZCAnZCcKICdjJyAtPiAnZCciID4g b3V0X2luc3RhbGxlZF9zZWNvbmRfY2QKLS0gCjIuNDUuMgoK --------------KStBMlFJsl2IIC6BHGOfR2Sh-- From unknown Sat Jun 21 12:32:16 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Tue, 17 Sep 2024 11:24:05 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator