From 7b52722d12dce6a23002b1dbb3ee6ed74e766551 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 7 Dec 2017 15:04:39 +0100 Subject: [PATCH] nightly: replace / from fingerprint in SSH key filename, fixes #423 The SSH key fingerprint is used in the filename. The base64 used for SSH key fingerprints includes /. Not all keys will end up having a / in them. For those that do, this will crash since the ssh key filename ends up being non-existent dirs: $ fdroid nightly Importing keystore /home/mhoffmann/.android/debug.keystore to /tmp/.cqswaeo8/.keystore.p12... MAC verified OK writing RSA key CRITICAL: Unknown exception found! Traceback (most recent call last): File "/usr/lib/python3.6/shutil.py", line 544, in move os.rename(src, real_dst) FileNotFoundError: [Errno 2] No such file or directory: '/tmp/.cqswaeo8/.privkey' -> '/tmp/.cqswaeo8/debug_keystore_PZtS/4Tzk4dpzKiX9AAf1GrhAVi9U7UE1aYEHr6evKo_id_rsa' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/mhoffmann/projects/oss/fdroidserver/fdroid", line 156, in main() File "/home/mhoffmann/projects/oss/fdroidserver/fdroid", line 132, in main mod.main() File "/home/mhoffmann/projects/oss/fdroidserver/fdroidserver/nightly.py", line 284, in main privkey = _ssh_key_from_debug_keystore() File "/home/mhoffmann/projects/oss/fdroidserver/fdroidserver/nightly.py", line 73, in _ssh_key_from_debug_keystore shutil.move(privkey, ssh_private_key_file) File "/usr/lib/python3.6/shutil.py", line 558, in move copy_function(src, real_dst) File "/usr/lib/python3.6/shutil.py", line 257, in copy2 copyfile(src, dst, follow_symlinks=follow_symlinks) File "/usr/lib/python3.6/shutil.py", line 121, in copyfile with open(dst, 'wb') as fdst: FileNotFoundError: [Errno 2] No such file or directory: '/tmp/.cqswaeo8/debug_keystore_PZtS/4Tzk4dpzKiX9AAf1GrhAVi9U7UE1aYEHr6evKo_id_rsa' --- fdroidserver/nightly.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fdroidserver/nightly.py b/fdroidserver/nightly.py index d4e4a4e3..249cd2e4 100644 --- a/fdroidserver/nightly.py +++ b/fdroidserver/nightly.py @@ -70,7 +70,8 @@ def _ssh_key_from_debug_keystore(): rsakey = paramiko.RSAKey.from_private_key_file(privkey) fingerprint = base64.b64encode(hashlib.sha256(rsakey.asbytes()).digest()).decode('ascii').rstrip('=') - ssh_private_key_file = os.path.join(tmp_dir, 'debug_keystore_' + fingerprint + '_id_rsa') + ssh_private_key_file = os.path.join(tmp_dir, 'debug_keystore_' + + fingerprint.replace('/', '_') + '_id_rsa') shutil.move(privkey, ssh_private_key_file) pub = rsakey.get_name() + ' ' + rsakey.get_base64() + ' ' + ssh_private_key_file -- 2.30.2