blob: 73e877af37276b50a6239aad62fdcd9fa970b7e5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
package Bugzilla::Quantum::Legacy;
use Mojo::Base 'Mojolicious::Controller';
use File::Spec::Functions qw(catfile);
use Bugzilla::Constants qw(bz_locations);
use Taint::Util qw(untaint);
use Sub::Name qw(subname);
use autodie;
_load_cgi(index_cgi => 'index.cgi');
_load_cgi(show_bug => 'show_bug.cgi');
sub _load_cgi {
my ($name, $file) = @_;
my $content;
{
local $/ = undef;
open my $fh, '<', catfile(bz_locations->{cgi_path}, $file);
$content = <$fh>;
untaint($content);
close $fh;
}
my $pkg = __PACKAGE__ . '::' . $name;
my @lines = (
qq{package $pkg;},
qq{#line 1 "$file"},
"sub { my (\$self) = \@_; $content };"
);
my $code = join "\n", @lines;
my $sub = _eval($code);
{
no strict 'refs'; ## no critic (strict)
*{ $name } = subname($name, $sub);
}
}
sub _eval { ## no critic (unpack)
return eval $_[0]; ## no critic (eval)
}
1;
|