Check that skin directory exists

Fixes: #1346
This commit is contained in:
Xavier Guimard 2017-12-20 22:48:12 +01:00
parent 92113fb6e3
commit 35d7e7e2f5
2 changed files with 19 additions and 6 deletions

View File

@ -409,18 +409,27 @@ sub getSkin {
$req->{sessionInfo}->{ipAddr} ||= $req->address;
# Load specific skin from skinRules
foreach my $rule ( @{ $self->conf->{skinRules} } ) {
foreach my $rule ( @{ $self->{skinRules} } ) {
if ( $rule->[1]->( $req, $req->sessionInfo ) ) {
$skin = $rule->[0];
$self->logger->debug("Skin $skin selected from skin rule");
if ( -d $self->conf->{templateDir} . '/' . $rule->[0] ) {
$skin = $rule->[0];
$self->logger->debug("Skin $skin selected from skin rule");
last;
}
}
}
# Check skin GET/POST parameter
my $skinParam = $req->param('skin');
if ( defined $skinParam && !$self->checkXSSAttack( 'skin', $skinParam ) ) {
$skin = $skinParam;
$self->logger->debug("Skin $skin selected from GET/POST parameter");
if ( defined $skinParam and !$self->checkXSSAttack( 'skin', $skinParam ) ) {
if ( -d $self->conf->{templateDir} . '/' . $skinParam ) {
$skin = $skinParam;
$self->logger->debug("Skin $skin selected from GET/POST parameter");
}
else {
$self->userLogger->error(
"User tries to access to unexistent skin dir $skinParam");
}
}
return $skin;

View File

@ -170,6 +170,10 @@ sub reloadConf {
# Initialize templateDir
$self->{templateDir} =
$self->conf->{templateDir} . '/' . $self->conf->{portalSkin};
unless ( -d $self->{templateDir} ) {
$self->error("Template dir $self->{templateDir} doesn't exist");
return $self->fail;
}
$self->{staticPrefix} = $self->conf->{staticPrefix} || '/static';
$self->{languages} = $self->conf->{languages} || '/';