Skip to content

Custom header Must-* rule not working #375

@popuku-dog

Description

@popuku-dog
  • drHEADer version: 2.0.0
  • Python version: 3.12.7
  • Operating System: Ubuntu 22.04.4 LTS

Description

Custom header or header other than policy headers can't work with Must-* rule.

What I Did

I found this issue when I was using drheader with custom header rule below

# rule.yaml
X-Custom-Header:
    Required: Optional
    Must-Avoid:
        - item_1
        - item_2
    Item-Delimiter: ';'
    Key-Delimiter: '='
    Value-Delimiter: ','

and the headers json file

# headers.json
{
    "X-Custom-Header": "item_1 = value_1, value_2; item_2 = value_1; item_3"
}

I apply the rule on the header json file with command

drheader compare single headers.json -rf rule.yaml

and it outputs
image

Then I trace the source code for a while, I found that in core.py L111 gives config['delimiters'] value get from _DELIMITERS, which will be None if the header not the keys in resources/delimiters.json. Therefore, when passing **config.get('delimiters', {}) to utils.parse_policy in header_validator.py L112, the error occur.
To the point of implementation, the meaning of **config.get('delimiters', {}) make the default value of delimiters a empty dict, but this will be None instead, which is expected.

Request

Can you fix this little bug? Or I can pull request to fix this error. This enables drheader to filter header based on values even if the header is not policy header. For example, you want to report the issue when some headers is in obselete values.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions