From 9154faf351a504b0a277c041a853bf165b047d58 Mon Sep 17 00:00:00 2001 From: Miguel Jacq Date: Tue, 2 Jan 2018 09:36:57 +1100 Subject: [PATCH] Check the file is a valid file or dir (not just that it exists) --- onionshare/__init__.py | 5 ++++- onionshare_gui/__init__.py | 5 ++++- share/locale/en.json | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/onionshare/__init__.py b/onionshare/__init__.py index 99beb0e0..4b64d420 100644 --- a/onionshare/__init__.py +++ b/onionshare/__init__.py @@ -68,12 +68,15 @@ def main(cwd=None): # Validation valid = True for filename in filenames: - if not os.path.exists(filename): + if not os.path.isfile(filename) and not os.path.isdir(filename): print(strings._("not_a_file").format(filename)) valid = False if not os.access(filename, os.R_OK): print(strings._("not_a_readable_file").format(filename)) valid = False + if os.path.isdir(filename) and os.path.getsize(filename) < 4096: + print(strings._("not_a_file").format(filename)) + valid = False if not valid: sys.exit() diff --git a/onionshare_gui/__init__.py b/onionshare_gui/__init__.py index 83d03cc0..9d105f6a 100644 --- a/onionshare_gui/__init__.py +++ b/onionshare_gui/__init__.py @@ -91,12 +91,15 @@ def main(): if filenames: valid = True for filename in filenames: - if not os.path.exists(filename): + if not os.path.isfile(filename) and not os.path.isdir(filename): Alert(strings._("not_a_file", True).format(filename)) valid = False if not os.access(filename, os.R_OK): Alert(strings._("not_a_readable_file", True).format(filename)) valid = False + if os.path.isdir(filename) and os.path.getsize(filename) < 4096: + Alert(strings._("not_a_file", True).format(filename)) + valid = False if not valid: sys.exit() diff --git a/share/locale/en.json b/share/locale/en.json index 0756843e..3fc0c313 100644 --- a/share/locale/en.json +++ b/share/locale/en.json @@ -8,7 +8,7 @@ "give_this_url": "Give this URL to the person you're sending the file to:", "give_this_url_stealth": "Give this URL and HidServAuth line to the person you're sending the file to:", "ctrlc_to_stop": "Press Ctrl-C to stop server", - "not_a_file": "{0:s} is not a file.", + "not_a_file": "{0:s} is not a valid file.", "not_a_readable_file": "{0:s} is not a readable file.", "no_available_port": "Could not start the Onion service as there was no available port.", "download_page_loaded": "Download page loaded",