aboutsummaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorGravatar Bartłomiej Dmitruk <bartek.dmitruk@gmail.com> 2026-01-03 18:09:44 +0100
committerGravatar GitHub <noreply@github.com> 2026-01-03 18:09:44 +0100
commit26c1102567c095b051b5e1a0aedb45b78713c283 (patch)
tree0c6d68799b7ff55019cc7ee3e73ea38087193006 /app
parent15814cfd35b8ac704a761530e14bd9efe6500ddc (diff)
Merge commit from fork
* Fix Path Traversal vulnerability in UserDAO methods * Add tests and changelog for UserDAO path traversal fix * make fix-all * Fix PHPStan --------- Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
Diffstat (limited to 'app')
-rw-r--r--app/Models/UserDAO.php9
1 files changed, 9 insertions, 0 deletions
diff --git a/app/Models/UserDAO.php b/app/Models/UserDAO.php
index 89f8f2a77..d61b5d9c9 100644
--- a/app/Models/UserDAO.php
+++ b/app/Models/UserDAO.php
@@ -49,6 +49,9 @@ class FreshRSS_UserDAO extends Minz_ModelPdo {
}
public static function exists(string $username): bool {
+ if (!FreshRSS_user_Controller::checkUsername($username)) {
+ return false;
+ }
return is_dir(USERS_PATH . '/' . $username);
}
@@ -64,6 +67,9 @@ class FreshRSS_UserDAO extends Minz_ModelPdo {
/** Time of the last modification action by the user (e.g., mark an article as read) */
public static function mtime(string $username): int {
+ if (!FreshRSS_user_Controller::checkUsername($username)) {
+ return 0;
+ }
return @filemtime(USERS_PATH . '/' . $username . '/config.php') ?: 0;
}
@@ -79,6 +85,9 @@ class FreshRSS_UserDAO extends Minz_ModelPdo {
/** Time of the last new content automatically received by the user (e.g., cron job, WebSub) */
public static function ctime(string $username): int {
+ if (!FreshRSS_user_Controller::checkUsername($username)) {
+ return 0;
+ }
return @filemtime(USERS_PATH . '/' . $username . '/' . LOG_FILENAME) ?: 0;
}
}