Skip to content

Commit 5eaba81

Browse files
committed
Handle unknown timezone identifiers in FsTzdbProvider
1 parent 44632b0 commit 5eaba81

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

src/tzdb.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,12 +189,19 @@ impl Tzif {
189189

190190
#[cfg(target_family = "unix")]
191191
pub fn read_tzif(identifier: &str) -> TemporalResult<Self> {
192+
// Protect from path traversal attacks
193+
if (identifier.starts_with('/') || identifier.contains('.')) {
194+
return Err(TemporalError::range("Ill-formed timezone identifier"));
195+
}
192196
let mut path = PathBuf::from(ZONEINFO_DIR);
193197
path.push(identifier);
194198
Self::from_path(&path)
195199
}
196200

197201
pub fn from_path(path: &Path) -> TemporalResult<Self> {
202+
if !path.exists() {
203+
return Err(TemporalError::range("Unknown timezone identifier"));
204+
}
198205
tzif::parse_tzif_file(path)
199206
.map(Into::into)
200207
.map_err(|e| TemporalError::general(e.to_string()))

0 commit comments

Comments
 (0)