Fix unknown attributes breaking packet init #107
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The Problem
Reading a raw RADIUS packet fails if a dictfile is supplied and any attributes in the packet are not in the dictionary. A KeyError is raised because of the logic testing the attribute as a 'tlv' attribute which expects a valid attribute object to exist in the dictionary.
Adds a test that exposed this problem.
Why This Solution
Adds a function to test if an attribute is a TLV attribute, which is just good code reuse are three places in packet.py that test for a TLV attribute. This function simply returns False if the attribute does not exist.
Also added a larger test case with a dictfile that reflects actual RADIUS attributes according to IANA, and a realistic packet containing fields that first exposed this is error in a production implementation using pyrad.