RPC: Improve snapshot path sanitization (bp #15456) (#15457)

Co-authored-by: Michael Vines <mvines@gmail.com>
This commit is contained in:
mergify[bot]
2021-02-22 19:35:49 +00:00
committed by GitHub
parent 8b80628b38
commit f254bf85eb

View File

@ -65,7 +65,7 @@ impl RpcRequestMiddleware {
Self { Self {
ledger_path, ledger_path,
snapshot_archive_path_regex: Regex::new( snapshot_archive_path_regex: Regex::new(
r"/snapshot-\d+-[[:alnum:]]+\.(tar|tar\.bz2|tar\.zst|tar\.gz)$", r"^/snapshot-\d+-[[:alnum:]]+\.(tar|tar\.bz2|tar\.zst|tar\.gz)$",
) )
.unwrap(), .unwrap(),
snapshot_config, snapshot_config,
@ -579,6 +579,9 @@ mod tests {
assert!(rrm_with_snapshot_config.is_file_get_path( assert!(rrm_with_snapshot_config.is_file_get_path(
"/snapshot-100-AvFf9oS8A8U78HdjT9YG2sTTThLHJZmhaMn2g8vkWYnr.tar.zst" "/snapshot-100-AvFf9oS8A8U78HdjT9YG2sTTThLHJZmhaMn2g8vkWYnr.tar.zst"
)); ));
assert!(!rrm_with_snapshot_config.is_file_get_path(
"../snapshot-100-AvFf9oS8A8U78HdjT9YG2sTTThLHJZmhaMn2g8vkWYnr.tar.zst"
));
assert!(rrm_with_snapshot_config assert!(rrm_with_snapshot_config
.is_file_get_path("/snapshot-100-AvFf9oS8A8U78HdjT9YG2sTTThLHJZmhaMn2g8vkWYnr.tar.gz")); .is_file_get_path("/snapshot-100-AvFf9oS8A8U78HdjT9YG2sTTThLHJZmhaMn2g8vkWYnr.tar.gz"));
assert!(rrm_with_snapshot_config assert!(rrm_with_snapshot_config