From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.2 required=3.0 tests=ALL_TRUSTED,AWL,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, T_SCC_BODY_TEXT_LINE shortcircuit=no autolearn=ham autolearn_force=no version=3.4.6 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 988891F461 for ; Mon, 13 Nov 2023 13:15:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=80x24.org; s=selector1; t=1699881352; bh=HWNfJNubPl10hqSUPDg8+0AOEpXhZn4s7evqxpFwMR4=; h=From:To:Subject:Date:In-Reply-To:References:From; b=TLSCMWzC2HoFDG4tQVArdWqmn8bm7F1jKDDpVRBM1Evc28cnSmAwr1yenx0dk+ol2 AKv+ZE+6NPR7Nyb3ooMFLRAQ6C4PSjW7xLiCEmX5jmIb6fN5ZePo/M7M6K/k+kEI97 8iBAWzDTW5pMsO0j9iHs1T8YUWSbUyohY4PxAfGE= From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 02/18] tmpfile: check `stat' errors, use autodie for unlink Date: Mon, 13 Nov 2023 13:15:35 +0000 Message-Id: <20231113131551.843230-3-e@80x24.org> In-Reply-To: <20231113131551.843230-1-e@80x24.org> References: <20231113131551.843230-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: `stat' can fail due to bugs on our end or ENOMEM, but there's no autodie support for it. So just die if `unlink' fails, since the FS wouldn't be usable for tmpfiles in that state, anyways. --- lib/PublicInbox/Tmpfile.pm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/PublicInbox/Tmpfile.pm b/lib/PublicInbox/Tmpfile.pm index 3040dd77..72dd9d24 100644 --- a/lib/PublicInbox/Tmpfile.pm +++ b/lib/PublicInbox/Tmpfile.pm @@ -1,9 +1,9 @@ -# Copyright (C) 2019-2021 all contributors +# Copyright (C) all contributors # License: AGPL-3.0+ package PublicInbox::Tmpfile; -use strict; -use v5.10.1; +use v5.12; use parent qw(Exporter); +use autodie qw(unlink); our @EXPORT = qw(tmpfile); use Fcntl qw(:DEFAULT); use Errno qw(EEXIST); @@ -21,7 +21,7 @@ sub tmpfile ($;$$) { if (defined $sock) { # add the socket inode number so we can figure out which # socket it belongs to - my @st = stat($sock); + my @st = stat($sock) or die "stat($sock): $!"; $id .= '-ino:'.$st[1]; } $id =~ tr!/!^!; @@ -31,7 +31,7 @@ sub tmpfile ($;$$) { do { my $fn = File::Spec->tmpdir . "/$id-".time.'-'.rand; if (sysopen(my $fh, $fn, $fl, 0600)) { # likely - unlink($fn) or warn "unlink($fn): $!"; # FS broken + unlink($fn); return $fh; # success } } while ($! == EEXIST);