summaryrefslogtreecommitdiff
path: root/cloudinit/handlers/__init__.py
diff options
context:
space:
mode:
authorScott Moser <smoser@ubuntu.com>2015-04-16 17:00:19 -0400
committerScott Moser <smoser@ubuntu.com>2015-04-16 17:00:19 -0400
commit341a805fca9a06ce12e9f4bbbe15b3dded9eb6a4 (patch)
tree71fce1c6c426f75c7126522a3a6efb57e4a9b26e /cloudinit/handlers/__init__.py
parentdcd4b2b371059bd6249b4e43af371ee1162273e8 (diff)
downloadvyos-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/__init__.py')
-rw-r--r--cloudinit/handlers/__init__.py5
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):