From 74ae6a6a3bde04ef12e1028e78ed9e5f8d330865 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20P=C3=B6hn?= Date: Fri, 3 Aug 2018 04:36:00 +0200 Subject: [PATCH] set locale explicitly when using keytool --- fdroidserver/common.py | 7 +++---- fdroidserver/index.py | 3 ++- fdroidserver/nightly.py | 9 ++++++--- fdroidserver/publish.py | 9 ++++----- 4 files changed, 15 insertions(+), 13 deletions(-) diff --git a/fdroidserver/common.py b/fdroidserver/common.py index 1b3bf8a3..62e8313e 100644 --- a/fdroidserver/common.py +++ b/fdroidserver/common.py @@ -2895,10 +2895,9 @@ def genkeystore(localconfig): if not os.path.exists(keystoredir): os.makedirs(keystoredir, mode=0o700) - env_vars = { - 'FDROID_KEY_STORE_PASS': localconfig['keystorepass'], - 'FDROID_KEY_PASS': localconfig['keypass'], - } + env_vars = {'LC_ALL': 'C.UTF-8', + 'FDROID_KEY_STORE_PASS': localconfig['keystorepass'], + 'FDROID_KEY_PASS': localconfig['keypass']} p = FDroidPopen([config['keytool'], '-genkey', '-keystore', localconfig['keystore'], '-alias', localconfig['repo_keyalias'], diff --git a/fdroidserver/index.py b/fdroidserver/index.py index 29bd24cb..37836153 100644 --- a/fdroidserver/index.py +++ b/fdroidserver/index.py @@ -620,7 +620,8 @@ def extract_pubkey(): if 'repo_pubkey' in common.config: pubkey = unhexlify(common.config['repo_pubkey']) else: - env_vars = {'FDROID_KEY_STORE_PASS': common.config['keystorepass']} + env_vars = {'LC_ALL': 'C.UTF-8', + 'FDROID_KEY_STORE_PASS': common.config['keystorepass']} p = FDroidPopenBytes([common.config['keytool'], '-exportcert', '-alias', common.config['repo_keyalias'], '-keystore', common.config['keystore'], diff --git a/fdroidserver/nightly.py b/fdroidserver/nightly.py index c31571ff..5fff2f33 100644 --- a/fdroidserver/nightly.py +++ b/fdroidserver/nightly.py @@ -59,11 +59,14 @@ def _ssh_key_from_debug_keystore(keystore=KEYSTORE_FILE): '-srcstorepass', PASSWORD, '-srckeypass', PASSWORD, '-destkeystore', p12, '-destalias', KEY_ALIAS, '-deststorepass', PASSWORD, '-destkeypass', PASSWORD, - '-deststoretype', 'PKCS12']) + '-deststoretype', 'PKCS12'], + env={'LC_ALL': 'C.UTF-8'}) subprocess.check_call(['openssl', 'pkcs12', '-in', p12, '-out', key_pem, - '-passin', 'pass:' + PASSWORD, '-passout', 'pass:' + PASSWORD]) + '-passin', 'pass:' + PASSWORD, '-passout', 'pass:' + PASSWORD], + env={'LC_ALL': 'C.UTF-8'}) subprocess.check_call(['openssl', 'rsa', '-in', key_pem, '-out', privkey, - '-passin', 'pass:' + PASSWORD]) + '-passin', 'pass:' + PASSWORD], + env={'LC_ALL': 'C.UTF-8'}) os.remove(key_pem) os.remove(p12) os.chmod(privkey, 0o600) # os.umask() should cover this, but just in case diff --git a/fdroidserver/publish.py b/fdroidserver/publish.py index 1f36966d..a63e5c43 100644 --- a/fdroidserver/publish.py +++ b/fdroidserver/publish.py @@ -74,7 +74,7 @@ def read_fingerprints_from_keystore(): """Obtain a dictionary containing all singning-key fingerprints which are managed by F-Droid, grouped by appid. """ - env_vars = {'LC_ALL': 'C', + env_vars = {'LC_ALL': 'C.UTF-8', 'FDROID_KEY_STORE_PASS': config['keystorepass'], 'FDROID_KEY_PASS': config['keypass']} p = FDroidPopen([config['keytool'], '-list', @@ -318,10 +318,9 @@ def main(): # See if we already have a key for this application, and # if not generate one... - env_vars = { - 'FDROID_KEY_STORE_PASS': config['keystorepass'], - 'FDROID_KEY_PASS': config['keypass'], - } + env_vars = {'LC_ALL': 'C.UTF-8', + 'FDROID_KEY_STORE_PASS': config['keystorepass'], + 'FDROID_KEY_PASS': config['keypass']} p = FDroidPopen([config['keytool'], '-list', '-alias', keyalias, '-keystore', config['keystore'], '-storepass:env', 'FDROID_KEY_STORE_PASS'], envs=env_vars)