aboutsummaryrefslogtreecommitdiff
path: root/src/tftpd.rs
diff options
context:
space:
mode:
authorReiner Herrmann <reiner@reiner-h.de>2019-03-25 01:40:14 +0100
committerReiner Herrmann <reiner@reiner-h.de>2019-03-25 01:40:14 +0100
commitc790e9b6013cfe86c81f5d8068feefff4339abf7 (patch)
tree2ff554b692128779cf0bd9f3fdd8aaed0984130d /src/tftpd.rs
parent01838bd4e8a208ef0d76181e1b5875421b7803a2 (diff)
Simplify error handling in some places
Diffstat (limited to 'src/tftpd.rs')
-rw-r--r--src/tftpd.rs23
1 files changed, 6 insertions, 17 deletions
diff --git a/src/tftpd.rs b/src/tftpd.rs
index a833998..d10287b 100644
--- a/src/tftpd.rs
+++ b/src/tftpd.rs
@@ -64,24 +64,13 @@ impl Tftpd {
fn file_allowed(&self, filename: &Path) -> Option<PathBuf> {
/* get parent to check dir where file should be read/written */
- let path = self.conf.dir.join(filename);
- let path = match path.parent() {
- Some(p) => p,
- None => return None,
- };
- let path = match path.canonicalize() {
- Ok(p) => p,
- Err(_) => return None,
- };
-
- /* get last component to append to canonicalized path */
- let filename = match filename.file_name() {
- Some(f) => f,
- None => return None,
- };
- let path = path.join(filename);
+ let path = self.conf.dir.join(filename)
+ .parent()?
+ .canonicalize()
+ .ok()?;
- match path.strip_prefix(&self.conf.dir) {
+ /* check last component of given filename appended to canonicalized path */
+ match path.join(filename.file_name()?).strip_prefix(&self.conf.dir) {
Ok(p) if p != PathBuf::new() => Some(p.to_path_buf()),
_ => None,
}