From 72b0492624f11b260f807002f9bfc81ddae56bc3 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 24 May 2018 08:43:05 -0600 Subject: [PATCH] Prevent colons from being used in filenames --- Xargo.toml | 6 ++++++ src/filesystem.rs | 6 ++++-- 2 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 Xargo.toml diff --git a/Xargo.toml b/Xargo.toml new file mode 100644 index 0000000000..0c493ec3d6 --- /dev/null +++ b/Xargo.toml @@ -0,0 +1,6 @@ +[dependencies.std] +features = ["panic_unwind", "backtrace"] + +#[dependencies.test] +#stage = 1 + diff --git a/src/filesystem.rs b/src/filesystem.rs index a5810e9d35..5be7cdee61 100644 --- a/src/filesystem.rs +++ b/src/filesystem.rs @@ -1,6 +1,6 @@ use std::cmp::min; -use syscall::error::{Result, Error, EEXIST, EISDIR, ENOENT, ENOSPC, ENOTDIR, ENOTEMPTY}; +use syscall::error::{Result, Error, EEXIST, EISDIR, EINVAL, ENOENT, ENOSPC, ENOTDIR, ENOTEMPTY}; use {BLOCK_SIZE, Disk, ExNode, Extent, Header, Node}; @@ -220,7 +220,9 @@ impl FileSystem { } pub fn create_node(&mut self, mode: u16, name: &str, parent_block: u64, ctime: u64, ctime_nsec: u32) -> Result<(u64, Node)> { - if self.find_node(name, parent_block).is_ok() { + if name.contains(':') { + Err(Error::new(EINVAL)) + } else if self.find_node(name, parent_block).is_ok() { Err(Error::new(EEXIST)) } else { let node_data = Node::new(mode, name, parent_block, ctime, ctime_nsec)?;