From: Hans-Christoph Steiner Date: Thu, 7 Dec 2017 14:04:39 +0000 (+0100) Subject: nightly: replace / from fingerprint in SSH key filename, fixes #423 X-Git-Tag: 1.0.0~37^2 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=fdroidserver.git;a=commitdiff_plain;h=7b52722d12dce6a23002b1dbb3ee6ed74e766551 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' --- 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