diff options
author | Chad Smith <chad.smith@canonical.com> | 2020-08-24 10:13:52 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-24 10:13:52 -0600 |
commit | c0450c02b25fe037c702e9bb145fbbaa28a165b1 (patch) | |
tree | b960e46e872b0846220213b1fde6fbdd0db093c8 /cloudinit/cmd | |
parent | db86753f81af73826158c9522f2521f210300e2b (diff) | |
download | vyos-cloud-init-c0450c02b25fe037c702e9bb145fbbaa28a165b1.tar.gz vyos-cloud-init-c0450c02b25fe037c702e9bb145fbbaa28a165b1.zip |
query: do not handle non-decodable non-gzipped content (#543)
Diffstat (limited to 'cloudinit/cmd')
-rw-r--r-- | cloudinit/cmd/query.py | 9 | ||||
-rw-r--r-- | cloudinit/cmd/tests/test_query.py | 5 |
2 files changed, 3 insertions, 11 deletions
diff --git a/cloudinit/cmd/query.py b/cloudinit/cmd/query.py index 03b77c17..07db9552 100644 --- a/cloudinit/cmd/query.py +++ b/cloudinit/cmd/query.py @@ -86,14 +86,11 @@ def load_userdata(ud_file_path): @returns: String of uncompressed userdata if possible, otherwise bytes. """ + bdata = util.load_file(ud_file_path, decode=False) try: - return util.load_file(ud_file_path) + return bdata.decode('utf-8') except UnicodeDecodeError: - encoded_data = util.load_file(ud_file_path, decode=False) - try: - return util.decomp_gzip(encoded_data, quiet=False) - except util.DecompressionError: - return encoded_data + return util.decomp_gzip(bdata, quiet=False, decode=True) def handle_args(name, args): diff --git a/cloudinit/cmd/tests/test_query.py b/cloudinit/cmd/tests/test_query.py index 421031aa..c258d321 100644 --- a/cloudinit/cmd/tests/test_query.py +++ b/cloudinit/cmd/tests/test_query.py @@ -144,11 +144,6 @@ class TestQuery: ('ud'.encode('utf-8'), 'ud', 'vd'.encode('utf-8'), 'vd'), (_gzip_data(b'ud'), 'ud', _gzip_data(b'vd'), 'vd'), (_gzip_data('ud'.encode('utf-8')), 'ud', _gzip_data(b'vd'), 'vd'), - (_gzip_data(b'ud') + b'invalid', 'ci-b64:', - _gzip_data(b'vd') + b'invalid', 'ci-b64:'), - # non-utf-8 encodable content - ('hi mom'.encode('utf-16'), 'ci-b64://5oAGkAIABtAG8AbQA=', - 'hi pops'.encode('utf-16'), 'ci-b64://5oAGkAIABwAG8AcABzAA=='), ) ) def test_handle_args_root_processes_user_data( |