From 82bf72235c74f768c08a0d7c3aa6e8f14cc71f5e Mon Sep 17 00:00:00 2001 From: Philippe Proulx Date: Fri, 11 Mar 2016 13:38:11 -0500 Subject: [PATCH] Fix: config: check for node type before checking props Signed-off-by: Philippe Proulx --- barectf/config.py | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/barectf/config.py b/barectf/config.py index eb816fb..80615b0 100644 --- a/barectf/config.py +++ b/barectf/config.py @@ -1722,6 +1722,10 @@ class _YamlConfigParser: def _create_clock(self, node): # create clock object clock = metadata.Clock() + + if not _is_assoc_array_prop(env_node): + raise ConfigError('clock objects must be associative arrays') + known_props = [ 'uuid', 'description', @@ -1933,6 +1937,10 @@ class _YamlConfigParser: # create trace object trace = metadata.Trace() trace_node = metadata_node['trace'] + + if not _is_assoc_array_prop(trace_node): + raise ConfigError('"trace" property (metadata) must be an associative array') + unk_prop = _get_first_unknown_prop(trace_node, [ 'byte-order', 'uuid', @@ -1981,6 +1989,10 @@ class _YamlConfigParser: def _create_event(self, event_node): event = metadata.Event() + + if not _is_assoc_array_prop(event_node): + raise ConfigError('event objects must be associative arrays') + unk_prop = _get_first_unknown_prop(event_node, [ 'log-level', 'context-type', @@ -1990,9 +2002,6 @@ class _YamlConfigParser: if unk_prop: raise ConfigError('unknown event object property: "{}"'.format(unk_prop)) - if not _is_assoc_array_prop(event_node): - raise ConfigError('event objects must be associative arrays') - if 'log-level' in event_node: ll = self._lookup_log_level(event_node['log-level']) @@ -2023,6 +2032,10 @@ class _YamlConfigParser: def _create_stream(self, stream_node): stream = metadata.Stream() + + if not _is_assoc_array_prop(stream_node): + raise ConfigError('stream objects must be associative arrays') + unk_prop = _get_first_unknown_prop(stream_node, [ 'packet-context-type', 'event-header-type', @@ -2033,9 +2046,6 @@ class _YamlConfigParser: if unk_prop: raise ConfigError('unknown stream object property: "{}"'.format(unk_prop)) - if not _is_assoc_array_prop(stream_node): - raise ConfigError('stream objects must be associative arrays') - if 'packet-context-type' in stream_node: try: t = self._create_type(stream_node['packet-context-type']) @@ -2121,6 +2131,9 @@ class _YamlConfigParser: if 'metadata' not in root: raise ConfigError('missing "metadata" property (root)') + if not _is_assoc_array_prop(metadata_node): + raise ConfigError('"metadata" property (root) must be an associative array') + metadata_node = root['metadata'] unk_prop = _get_first_unknown_prop(metadata_node, [ 'type-aliases', @@ -2134,9 +2147,6 @@ class _YamlConfigParser: if unk_prop: raise ConfigError('unknown metadata property: "{}"'.format(unk_prop)) - if not _is_assoc_array_prop(metadata_node): - raise ConfigError('"metadata" property (root) must be an associative array') - self._set_byte_order(metadata_node) self._register_clocks(metadata_node) meta.clocks = self._clocks -- 2.34.1