X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FNBI.git;a=blobdiff_plain;f=osm_nbi%2Finstance_topics.py;h=55845d67fab9d24dc51f69e37d6cdccae0669d38;hp=e14590b678b1703a9238e4fdf3e7d3de2a27e840;hb=36ffe5594a6f5ce262147c066bfadd438952acc1;hpb=09e6542ceae8ee08ee7cc372f7344a77bc1f5304 diff --git a/osm_nbi/instance_topics.py b/osm_nbi/instance_topics.py index e14590b..55845d6 100644 --- a/osm_nbi/instance_topics.py +++ b/osm_nbi/instance_topics.py @@ -23,6 +23,7 @@ from base_topic import BaseTopic, EngineException, get_iterable from descriptor_topics import DescriptorTopic from yaml import safe_dump from osm_common.dbbase import DbException +from re import match # For checking that additional parameter names are valid Jinja2 identifiers __author__ = "Alfonso Tierno " @@ -115,6 +116,12 @@ class NsrTopic(BaseTopic): break if additional_params: for k, v in additional_params.items(): + # BEGIN Check that additional parameter names are valid Jinja2 identifiers + if not match('^[a-zA-Z_][a-zA-Z0-9_]*$', k): + raise EngineException("Invalid param name at {}:{}. Must contain only alphanumeric characters " + "and underscores, and cannot start with a digit" + .format(where_, k)) + # END Check that additional parameter names are valid Jinja2 identifiers if not isinstance(k, str): raise EngineException("Invalid param at {}:{}. Only string keys are allowed".format(where_, k)) if "." in k or "$" in k: