Skip to content

Commit 1e6a130

Browse files
committed
Fix the scoreboard zip
1 parent de9cf2b commit 1e6a130

File tree

3 files changed

+17
-12
lines changed

3 files changed

+17
-12
lines changed

etc/domserver-static.php.in

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,15 @@
88
define('DOMJUDGE_VERSION', '@DOMJUDGE_VERSION@');
99
define('DOMJUDGE_INSTALL_METHOD', '@INSTALL_METHOD@');
1010

11-
define('BINDIR', '@domserver_bindir@');
12-
define('ETCDIR', '@domserver_etcdir@');
13-
define('WEBAPPDIR', '@domserver_webappdir@');
14-
define('LIBDIR', '@domserver_libdir@');
15-
define('SQLDIR', '@domserver_sqldir@');
16-
define('VENDORDIR', '@domserver_webappdir@/vendor');
17-
define('LOGDIR', '@domserver_logdir@');
18-
define('RUNDIR', '@domserver_rundir@');
19-
define('TMPDIR', '@domserver_tmpdir@');
11+
define('BINDIR', '@domserver_bindir@');
12+
define('ETCDIR', '@domserver_etcdir@');
13+
define('WEBAPPDIR', '@domserver_webappdir@');
14+
define('LIBDIR', '@domserver_libdir@');
15+
define('SQLDIR', '@domserver_sqldir@');
16+
define('VENDORDIR', '@domserver_webappdir@/vendor');
17+
define('NODEMODULESDIR', '@domserver_webappdir@/node_modules');
18+
define('LOGDIR', '@domserver_logdir@');
19+
define('RUNDIR', '@domserver_rundir@');
20+
define('TMPDIR', '@domserver_tmpdir@');
2021

21-
define('BASEURL', '@BASEURL@');
22+
define('BASEURL', '@BASEURL@');

webapp/config/static.yaml.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ parameters:
99
domjudge.libdir: @domserver_libdir@
1010
domjudge.sqldir: @domserver_sqldir@
1111
domjudge.vendordir: @domserver_webappdir@/vendor
12+
domjudge.nodemodulesdir: @domserver_webappdir@/node_modules
1213
domjudge.logdir: @domserver_logdir@
1314
domjudge.rundir: @domserver_rundir@
1415
domjudge.tmpdir: @domserver_tmpdir@

webapp/src/Service/DOMJudgeService.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,8 @@ public function __construct(
114114
protected string $projectDir,
115115
#[Autowire('%domjudge.vendordir%')]
116116
protected string $vendorDir,
117+
#[Autowire('%domjudge.nodemodulesdir%')]
118+
protected string $nodeModulesDir,
117119
#[Autowire('%domjudge.version%')]
118120
protected readonly string $domjudgeVersion,
119121
#[Autowire('%domjudge.installmethod%')]
@@ -1571,8 +1573,9 @@ public function getScoreboardZip(
15711573
if ($filepath === false) {
15721574
throw new BadRequestHttpException("Could not find (symlinked) file: " . $file);
15731575
}
1574-
if (!str_starts_with($filepath, $publicPath) &&
1575-
!str_starts_with($filepath, $this->vendorDir)
1576+
if (!(str_starts_with($filepath, $publicPath) ||
1577+
str_starts_with($filepath, $this->vendorDir) ||
1578+
str_starts_with($filepath, $this->nodeModulesDir))
15761579
) {
15771580
// Path outside of known good dirs: path traversal
15781581
continue;

0 commit comments

Comments
 (0)