You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildstream.apache.org by tv...@apache.org on 2021/01/24 13:37:08 UTC
[buildstream] 01/06: node.pyx: Fixed error reporting in
SequenceNode.as_str_list()
This is an automated email from the ASF dual-hosted git repository.
tvb pushed a commit to branch tristan/change-remote-config
in repository https://gitbox.apache.org/repos/asf/buildstream.git
commit 3f7b5be3d9825ca545dabcdea27fdd9e02a0147a
Author: Tristan van Berkom <tr...@codethink.co.uk>
AuthorDate: Sun Jan 24 12:43:41 2021 +0900
node.pyx: Fixed error reporting in SequenceNode.as_str_list()
This function was not validating that it was in fact a list of scalar nodes,
so calling this, or MappingNode.get_str_list(), on a list of lists or a list
of dictionaries, would result in an unhandled runtime exception rather than
a properly reported LoadError.
---
src/buildstream/node.pyx | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/src/buildstream/node.pyx b/src/buildstream/node.pyx
index 9a0bd2e..b16e8b3 100644
--- a/src/buildstream/node.pyx
+++ b/src/buildstream/node.pyx
@@ -1255,7 +1255,16 @@ cdef class SequenceNode(Node):
Returns:
:class:`list`: the content of the sequence as a list of strings
"""
- return [node.as_str() for node in self.value]
+ cdef list str_list = []
+ cdef Node node
+ for node in self.value:
+ if type(node) is not ScalarNode:
+ provenance = node.get_provenance()
+ raise LoadError("{}: List item is not of the expected type 'scalar'"
+ .format(provenance), LoadErrorReason.INVALID_DATA)
+ str_list.append(node.as_str())
+
+ return str_list
cpdef MappingNode mapping_at(self, int index):
"""mapping_at(index)