aboutsummaryrefslogtreecommitdiff
path: root/cache/src/backends
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-12-09 16:23:21 +0100
committermetamuffin <metamuffin@disroot.org>2025-12-09 16:23:21 +0100
commit242d5763d451eed2402be7afde50cd9fa0d6bc79 (patch)
treeb16e4a3df790a498b7b44a6087dd203a0ba4b7e7 /cache/src/backends
parent6edf0fd93abf7e58b4c0974e3d3e54bcf8517946 (diff)
downloadjellything-242d5763d451eed2402be7afde50cd9fa0d6bc79.tar
jellything-242d5763d451eed2402be7afde50cd9fa0d6bc79.tar.bz2
jellything-242d5763d451eed2402be7afde50cd9fa0d6bc79.tar.zst
fix cache name escape bugsnew-model
Diffstat (limited to 'cache/src/backends')
-rw-r--r--cache/src/backends/filesystem.rs5
1 files changed, 4 insertions, 1 deletions
diff --git a/cache/src/backends/filesystem.rs b/cache/src/backends/filesystem.rs
index 9a9db9c..ec242d2 100644
--- a/cache/src/backends/filesystem.rs
+++ b/cache/src/backends/filesystem.rs
@@ -5,7 +5,7 @@
*/
use crate::{Config, backends::CacheStorage};
-use anyhow::Result;
+use anyhow::{Result, bail};
use rand::random;
use std::{
fs::{File, create_dir_all, rename},
@@ -34,6 +34,9 @@ impl CacheStorage for Filesystem {
Ok(())
}
fn read(&self, key: &str) -> Result<Option<Vec<u8>>> {
+ if key.contains("..") || key.starts_with("/") {
+ bail!("invalid key")
+ }
match File::open(self.0.join(key)) {
Ok(mut f) => {
let mut data = Vec::new();