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.2 required=3.0 tests=ALL_TRUSTED,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF 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 799851F910 for ; Thu, 1 Dec 2022 11:21:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=80x24.org; s=selector1; t=1669893693; bh=pTip+CHyHCkV86CwEitBNAPo4B+zkc+r69CIDk21ayE=; h=From:To:Subject:Date:In-Reply-To:References:From; b=Oh1A7LdgcmFx+dBlEWL+c30XuUAxHX0xKC3AEoS2dKqhydROT7nGIWEQwezW3xWww w/pAIfUvpKqMh4eBf5Y+l2HcKo8HFcyY9YP5UfIseDUxKsD3Nh3gr4zc02/Cxg+2Kc rU5jmKSBWwlLAqUnhuKvZ36J17WPirX99ZszBFVY= From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 1/2] lei: stricter external checks for valid $GIT_DIR/objects Date: Thu, 1 Dec 2022 11:21:31 +0000 Message-Id: <20221201112132.4005900-2-e@80x24.org> In-Reply-To: <20221201112132.4005900-1-e@80x24.org> References: <20221201112132.4005900-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: I ended up with my $HOME in ~/.cache/lei/all_locals_ever.git/objects/info/alterntes and am trying to avoid that in the future. --- lib/PublicInbox/LeiXSearch.pm | 5 +++-- t/lei.t | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/PublicInbox/LeiXSearch.pm b/lib/PublicInbox/LeiXSearch.pm index 90cb83b9..8e195c4c 100644 --- a/lib/PublicInbox/LeiXSearch.pm +++ b/lib/PublicInbox/LeiXSearch.pm @@ -617,11 +617,12 @@ sub prepare_external { } elsif ($loc =~ m!\Ahttps?://!) { require URI; return add_uri($self, URI->new($loc)); - } elsif (-f "$loc/ei.lock") { + } elsif (-f "$loc/ei.lock" && -d "$loc/ALL.git/objects") { require PublicInbox::ExtSearch; die "`\\n' not allowed in `$loc'\n" if index($loc, "\n") >= 0; $loc = PublicInbox::ExtSearch->new($loc); - } elsif (-f "$loc/inbox.lock" || -d "$loc/public-inbox") { + } elsif ((-f "$loc/inbox.lock" && -d "$loc/all.git/objects") || + (-d "$loc/public-inbox" && -d "$loc/objects")) { die "`\\n' not allowed in `$loc'\n" if index($loc, "\n") >= 0; require PublicInbox::Inbox; # v2, v1 $loc = bless { inboxdir => $loc }, 'PublicInbox::Inbox'; diff --git a/t/lei.t b/t/lei.t index b10c9b59..a80143ef 100644 --- a/t/lei.t +++ b/t/lei.t @@ -148,7 +148,8 @@ my $test_fail = sub { for my $lk (qw(ei inbox)) { my $d = "$home/newline\n$lk"; - mkdir $d; + my $all = $lk eq 'ei' ? 'ALL' : 'all'; + File::Path::mkpath("$d/$all.git/objects"); open my $fh, '>', "$d/$lk.lock" or BAIL_OUT "open $d/$lk.lock"; for my $fl (qw(-I --only)) { ok(!lei('q', $fl, $d, 'whatever'),