diff options
author | Scott Moser <smoser@ubuntu.com> | 2015-04-16 17:00:19 -0400 |
---|---|---|
committer | Scott Moser <smoser@ubuntu.com> | 2015-04-16 17:00:19 -0400 |
commit | 341a805fca9a06ce12e9f4bbbe15b3dded9eb6a4 (patch) | |
tree | 71fce1c6c426f75c7126522a3a6efb57e4a9b26e /cloudinit/handlers | |
parent | dcd4b2b371059bd6249b4e43af371ee1162273e8 (diff) | |
download | vyos-cloud-init-341a805fca9a06ce12e9f4bbbe15b3dded9eb6a4.tar.gz vyos-cloud-init-341a805fca9a06ce12e9f4bbbe15b3dded9eb6a4.zip |
fix cloud-config-archive handling
handling of cloud-config-archive input would fail in fully_decoded_payload.
part.get_charset() would return a Charset object, but
get_charset.input_codec is a string suitable for passing to decode.
This handles that correctly, and is more careful about binary data inside
input.
The test added verifies that cloud-config inside a cloud-config-archive
is handled correctly and also that binary data there is ignored without
exceptions raised.
LP: #1445143
Diffstat (limited to 'cloudinit/handlers')
-rw-r--r-- | cloudinit/handlers/__init__.py | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/cloudinit/handlers/__init__.py b/cloudinit/handlers/__init__.py index 52defe66..53d5604a 100644 --- a/cloudinit/handlers/__init__.py +++ b/cloudinit/handlers/__init__.py @@ -263,7 +263,10 @@ def fixup_handler(mod, def_freq=PER_INSTANCE): def type_from_starts_with(payload, default=None): - payload_lc = payload.lower() + try: + payload_lc = util.decode_binary(payload).lower() + except UnicodeDecodeError: + return default payload_lc = payload_lc.lstrip() for text in INCLUSION_SRCH: if payload_lc.startswith(text): |