From 4c2bdcca098792bf1c7fb19d7779d05c436a2f78 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Tue, 1 Sep 2020 01:15:07 +0000 Subject: init+convert: create non-existing directory hierarchies Following "git init" as an example, we'll create every parent path up to the one specified, instead of attempting to continue on when Cwd::abs_path returns `undef'. --- script/public-inbox-init | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'script/public-inbox-init') diff --git a/script/public-inbox-init b/script/public-inbox-init index ae4a575c..c775eb31 100755 --- a/script/public-inbox-init +++ b/script/public-inbox-init @@ -138,8 +138,9 @@ close($fh) or die "failed to close $pi_config_tmp: $!\n"; my $pfx = "publicinbox.$name"; my @x = (qw/git config/, "--file=$pi_config_tmp"); -require Cwd; -$inboxdir = Cwd::abs_path($inboxdir); +require File::Spec; +$inboxdir = File::Spec->canonpath($inboxdir); + die "`\\n' not allowed in `$inboxdir'\n" if $inboxdir =~ /\n/s; if (-f "$inboxdir/inbox.lock") { if (!defined $version) { @@ -185,6 +186,11 @@ if ($skip_docdata) { $ibx->{-skip_docdata} = $skip_docdata; } $ibx->init_inbox(0, $skip_epoch, $skip_artnum); +require Cwd; +my $tmp = Cwd::abs_path($inboxdir); +defined($tmp) or die "failed to resolve $inboxdir: $!\n"; +$inboxdir = $tmp; +die "`\\n' not allowed in `$inboxdir'\n" if $inboxdir =~ /\n/s; # needed for git prior to v2.1.0 umask(0077) if defined $perm; -- cgit v1.2.3-24-ge0c7