about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2021-11-10 10:28:37 +0000
committerEric Wong <e@80x24.org>2021-11-10 18:38:16 +0000
commit7eeeea81c74c7184984510892871fd79406c0393 (patch)
tree24de6c6f01281e374e5785c3b26550b3452cc855
parent1fb061098abd9a9ad8f018b0583071e19ffc9fec (diff)
downloadpublic-inbox-7eeeea81c74c7184984510892871fd79406c0393.tar.gz
I don't expect this to be hit in real-world use via normal
interactive shells.  However, somebody could accidentally add
"\n" in languages (e.g. Perl, C) where it's easy to pass "\n"
in argv[].
-rw-r--r--lib/PublicInbox/LeiQuery.pm1
-rw-r--r--t/lei.t3
2 files changed, 4 insertions, 0 deletions
diff --git a/lib/PublicInbox/LeiQuery.pm b/lib/PublicInbox/LeiQuery.pm
index 352ee601..51ee3d9c 100644
--- a/lib/PublicInbox/LeiQuery.pm
+++ b/lib/PublicInbox/LeiQuery.pm
@@ -141,6 +141,7 @@ no query allowed on command-line with --stdin
                 PublicInbox::InputPipe::consume($self->{0}, \&qstr_add, $self);
                 return;
         }
+        chomp(@argv) and $self->qerr("# trailing `\\n' removed");
         $mset_opt{q_raw} = [ @argv ]; # copy
         $mset_opt{qstr} =
                 $self->{lse}->query_argv_to_string($self->{lse}->git, \@argv);
diff --git a/t/lei.t b/t/lei.t
index f7de1b71..b10c9b59 100644
--- a/t/lei.t
+++ b/t/lei.t
@@ -143,6 +143,9 @@ my $test_fail = sub {
         lei('-C', '/dev/null', 'q', 'whatever');
         is($? >> 8, 1, 'chdir at beginning fails to /dev/null');
 
+        lei_ok('q', "foo\n");
+        like($lei_err, qr/trailing `\\n' removed/s, "noted `\\n' removal");
+
         for my $lk (qw(ei inbox)) {
                 my $d = "$home/newline\n$lk";
                 mkdir $d;