diff options
author | Eric Wong <e@yhbt.net> | 2020-03-19 03:32:54 -0500 |
---|---|---|
committer | Eric Wong <e@yhbt.net> | 2020-03-20 18:23:09 +0000 |
commit | a7c58d0ce022671c9170401054a1131b9ec15bfa (patch) | |
tree | d91a79e28ae215f76f543b78d259dd8ff5dd3478 /lib/PublicInbox/SolverGit.pm | |
parent | 8fb8fc52420ef669c5b9c583d32647e9fbdffd88 (diff) | |
download | public-inbox-a7c58d0ce022671c9170401054a1131b9ec15bfa.tar.gz |
We want WWW->preload to get as many immortal allocations done as possible, and the `state' feature from Perl 5.10 prevents that.
Diffstat (limited to 'lib/PublicInbox/SolverGit.pm')
-rw-r--r-- | lib/PublicInbox/SolverGit.pm | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/lib/PublicInbox/SolverGit.pm b/lib/PublicInbox/SolverGit.pm index 34669dbe..f881e16e 100644 --- a/lib/PublicInbox/SolverGit.pm +++ b/lib/PublicInbox/SolverGit.pm @@ -34,6 +34,12 @@ my $OID_MIN = 7; # work fairly. Other PSGI servers may have trouble, though. my $MAX_PATCH = 9999; +my $LF = qr!\r?\n!; +my $ANY = qr![^\r\n]+!; +my $MODE = '100644|120000|100755'; +my $FN = qr!(?:("?[^/\n]+/[^\r\n]+)|/dev/null)!; +my %BAD_COMPONENT = ('' => 1, '.' => 1, '..' => 1); + # di = diff info / a hashref with information about a diff ($di): # { # oid_a => abbreviated pre-image oid, @@ -110,10 +116,6 @@ sub extract_diff ($$) { $s =~ s/\r\n/\n/sg; } - state $LF = qr!\r?\n!; - state $ANY = qr![^\r\n]+!; - state $MODE = '100644|120000|100755'; - state $FN = qr!(?:("?[^/\n]+/[^\r\n]+)|/dev/null)!; $s =~ m!( # $1 start header lines we save for debugging: @@ -174,8 +176,7 @@ sub extract_diff ($$) { # get rid of path-traversal attempts and junk patches: # it's junk at best, an attack attempt at worse: - state $bad_component = { map { $_ => 1 } ('', '.', '..') }; - foreach (@a, @b) { return if $bad_component->{$_} } + foreach (@a, @b) { return if $BAD_COMPONENT{$_} } $di->{path_a} = join('/', @a) if @a; $di->{path_b} = join('/', @b); |