about summary refs log tree commit homepage
path: root/lib/PublicInbox/LeiExternal.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2021-03-19 10:35:56 -0200
committerEric Wong <e@80x24.org>2021-03-19 12:46:56 +0000
commitf7af186cf033daae8947f3368378e07ee116bb9c (patch)
tree113c38592bea11322eee07c49bf98fdbe37aa83e /lib/PublicInbox/LeiExternal.pm
parent30a997d856baec0c73acc376f4a872917cbfed28 (diff)
downloadpublic-inbox-f7af186cf033daae8947f3368378e07ee116bb9c.tar.gz
git 2.11 and earlier could not handle git directories with
newlines in them, nor does libgit2 support them.

Followup-to: d87dd0e679587043 ("config: reject `\n' in `inboxdir'")
Diffstat (limited to 'lib/PublicInbox/LeiExternal.pm')
-rw-r--r--lib/PublicInbox/LeiExternal.pm5
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/PublicInbox/LeiExternal.pm b/lib/PublicInbox/LeiExternal.pm
index 47791d4e..b5dd85e1 100644
--- a/lib/PublicInbox/LeiExternal.pm
+++ b/lib/PublicInbox/LeiExternal.pm
@@ -170,9 +170,14 @@ sub lei_add_external {
                 $self->fail(<<""); # TODO: did you mean "update-external?"
 --mirror destination `$location' already exists
 
+        } elsif (-d $location) {
+                index($location, "\n") >= 0 and
+                        return $self->fail("`\\n' not allowed in `$location'");
         }
         if ($location !~ m!\Ahttps?://! && !-d $location) {
                 $mirror // return $self->fail("$location not a directory");
+                index($location, "\n") >= 0 and
+                        return $self->fail("`\\n' not allowed in `$location'");
                 $mirror = ext_canonicalize($mirror);
                 require PublicInbox::LeiMirror;
                 PublicInbox::LeiMirror->start($self, $mirror => $location);