From: Eric Wong Date: Wed, 10 Nov 2021 10:28:37 +0000 (+0000) Subject: lei q: disallow "\n" in argv[] elements X-Git-Tag: v1.8.0~46 X-Git-Url: http://www.git.stargrave.org/?p=public-inbox.git;a=commitdiff_plain;h=7eeeea81c74c7184984510892871fd79406c0393 lei q: disallow "\n" in argv[] elements 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[]. --- 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;