Skip to content

RegexFilter auto-boxing of Boolean useRawMsg can lead to NPE #3239

@JWT007

Description

@JWT007

In RegexFilter.Builder (2.24.1) the PluginAttribute for useRawMsg is a Boolean default null.

@PluginFactory
public static RegexFilter createFilter(
        // @formatter:off
        @PluginAttribute("regex") final String regex,
        @PluginElement("PatternFlags") final String[] patternFlags,
        @PluginAttribute("useRawMsg") final Boolean useRawMsg,
        @PluginAttribute("onMatch") final Result match,
        @PluginAttribute("onMismatch") final Result mismatch)
        // @formatter:on
        throws IllegalArgumentException, IllegalAccessException {
    if (regex == null) {
        LOGGER.error("A regular expression must be provided for RegexFilter");
        return null;
    }
    return new RegexFilter(useRawMsg, Pattern.compile(regex, toPatternFlags(patternFlags)), match, mismatch);
}

The RegexFilter constructor expects a boolean primitive.

private RegexFilter(final boolean raw, final Pattern pattern, final Result onMatch, final Result onMismatch) {
    super(onMatch, onMismatch);
    this.pattern = pattern;
    this.useRawMessage = raw;
}

I believe, if the useRawMsg attribute is not set (undefined/null), auto-boxing from Boolean to boolean will cause/throw a NPE which is not caught and the builder will not return null as it should?

Also, the 'regex' attribute should probably be defined as @required for the isValid() builder-functionality to work correctly.

Metadata

Metadata

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions