From 408aedf534d7148517672125b652e757cdbf58bd Mon Sep 17 00:00:00 2001 From: Joshua Barrass Date: Wed, 26 Apr 2023 22:54:34 +0100 Subject: [PATCH] Fix #6: check path matches, rather than blindly selecting metadata --- freezetag/freezefs.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/freezetag/freezefs.py b/freezetag/freezefs.py index 8840073..aa2bb27 100644 --- a/freezetag/freezefs.py +++ b/freezetag/freezefs.py @@ -367,6 +367,12 @@ def open(self, path, flags): if not frozen_entry: raise FuseOSError(ENOENT) + # This is the path, relative to the freezetag file's root, that we are trying to open. + # Knowing this is essential to providing the correct metadata. + # + # TODO: validate that this is correct on all operating systems. + target_path = "/".join(frozen_entry.path.parts[2:]) + freezetag_path = None metadata = None if frozen_entry.metadata_len: @@ -383,8 +389,11 @@ def open(self, path, flags): for f in freezetag.data.frozen.files: if f.checksum == item.checksum: - metadata = f.metadata - break + if f.path == target_path: + self._log_verbose(f'opened {f.path} as {path} (target: {target_path})') + metadata = f.metadata + break + self._log_verbose(f'ignoring {f.path} despite matching checksum (target: {target_path})') file = FuseFile.from_info(file_entry.path, flags, metadata, file_entry.metadata_info, file_entry.metadata_len, frozen_entry.metadata_len)