From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 7C2A01F953 for ; Tue, 2 Nov 2021 06:57:43 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH] init: respect umask when creating description Date: Tue, 2 Nov 2021 06:57:43 +0000 Message-Id: <20211102065743.7509-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: I noticed a description for a new inbox had st_mode=0600. --- script/public-inbox-init | 12 ++++++------ t/init.t | 8 +++++++- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/script/public-inbox-init b/script/public-inbox-init index 1223d47e..5de45781 100755 --- a/script/public-inbox-init +++ b/script/public-inbox-init @@ -212,6 +212,12 @@ if ($skip_docdata) { } $ibx->init_inbox(0, $skip_epoch, $skip_artnum); +my $f = "$inboxdir/description"; +if (sysopen $fh, $f, O_CREAT|O_EXCL|O_WRONLY) { + print $fh "public inbox for $address[0]\n" or die "print($f): $!"; + close $fh or die "close($f): $!"; +} + # needed for git prior to v2.1.0 umask(0077) if defined $perm; @@ -248,9 +254,3 @@ if (defined $perm) { rename $pi_config_tmp, $pi_config or die "failed to rename `$pi_config_tmp' to `$pi_config': $!\n"; undef $auto_unlink; # trigger ->DESTROY - -my $f = "$inboxdir/description"; -if (sysopen $fh, $f, O_CREAT|O_EXCL|O_WRONLY) { - print $fh "public inbox for $address[0]\n" or die "print($f): $!"; - close $fh or die "close($f): $!"; -} diff --git a/t/init.t b/t/init.t index 4bec6a2f..6f4c9dce 100644 --- a/t/init.t +++ b/t/init.t @@ -97,10 +97,16 @@ sub quiet_fail { $cmd = [ '-init', 'deep-non-existent', "$tmpdir/a/b/c/d", qw(http://example.com/abcd abcd@example.com) ]; $err = ''; + my $umask = umask(022) // xbail "umask: $!"; ok(run_script($cmd, $env, $rdr), 'initializes non-existent hierarchy'); + umask($umask) // xbail "umask: $!"; ok(-d "$tmpdir/a/b/c/d", 'directory created'); - is(PublicInbox::Inbox::try_cat("$tmpdir/a/b/c/d/description"), + my $desc = "$tmpdir/a/b/c/d/description"; + is(PublicInbox::Inbox::try_cat($desc), "public inbox for abcd\@example.com\n", 'description set'); + my $mode = (stat($desc))[2]; + is(sprintf('0%03o', $mode & 0777), '0644', + 'description respects umask'); open my $fh, '>', "$tmpdir/d" or BAIL_OUT "open: $!"; close $fh;