Beispiel #1
0
    def _build_search_patterns_for_mode(
            self,
            rule: YamlTree[YamlMap]) -> Tuple[BooleanRuleExpression, Mode]:

        rule_raw = rule.value
        mode = (Mode(str(rule_raw["mode"].unroll()))
                if rule_raw.get("mode") else DEFAULT_MODE)
        if mode == TAINT_MODE:
            # Raises InvalidRuleSchemaError if fails to parse in search mode
            return self._build_taint_expression(rule), mode
        else:
            # Raises InvalidRuleSchemaError if fails to parse in search mode
            return self._build_boolean_expression(rule), mode
Beispiel #2
0
    def _taint_or_search_patterns_validation(
            self,
            rule: YamlTree[YamlMap]) -> Tuple[BooleanRuleExpression, Mode]:

        rule_raw = rule.value
        mode = (Mode(str(rule_raw["mode"].unroll()))
                if rule_raw.get("mode") else DEFAULT_MODE)
        if mode == TAINT_MODE:
            # Raises InvalidRuleSchemaError if fails to parse in search mode
            return self._build_taint_expression(rule), mode
        elif mode == SEARCH_MODE:
            # Raises InvalidRuleSchemaError if fails to parse in search mode
            return self._build_boolean_expression(rule), mode
        else:
            raise InvalidRuleSchemaError(
                short_msg="invalid mode",
                long_msg=f"The only supported modes are {SUPPORTED_MODES}",
                spans=[rule_raw["mode"].span],
            )