diff options
author | John Thacker <johnthacker@gmail.com> | 2023-04-29 14:29:50 -0400 |
---|---|---|
committer | John Thacker <johnthacker@gmail.com> | 2023-04-29 22:11:52 +0000 |
commit | f18a3ddd526fc52b0e23ef67992f529a9a884c87 (patch) | |
tree | a6ef1dee03f720702cb891187148415e7ec6c114 /epan/dissectors/packet-its.c | |
parent | b1b27a8bcbc5ad1e43cf169d5ff4f3951dc6fb4b (diff) |
PER, asn2wrs: Handle VAL_PTR for known multiplier string types
Have the single octet known multiplier string types (IA5String,
NumericString, PrintableString, VisibleString, the yet unsupported
ISO646String) support returning the tvb containing the item in a
VAL_PTR if they don't have a permitted alphabet.
We currently handle a VAL_PTR of one of those types if they do
have a permitted alphabet.
Note that this also applies to UTCTime and GeneralizedTime, since
under the hood we treat those as VisibleStrings anyway.
It does *not* apply to BMPString (UCS2) nor UniversalSTring (UCS4),
even though those are known multiplier string types.
This should fix handling of ENBname and MMEname in S1AP as well.
Related to #19036
Diffstat (limited to 'epan/dissectors/packet-its.c')
-rw-r--r-- | epan/dissectors/packet-its.c | 42 |
1 files changed, 28 insertions, 14 deletions
diff --git a/epan/dissectors/packet-its.c b/epan/dissectors/packet-its.c index 1157787fc4..021477161c 100644 --- a/epan/dissectors/packet-its.c +++ b/epan/dissectors/packet-its.c @@ -3718,7 +3718,8 @@ dissect_its_BOOLEAN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro static int dissect_its_IA5String_SIZE_1_24(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_IA5String(tvb, offset, actx, tree, hf_index, - 1, 24, FALSE); + 1, 24, FALSE, + NULL); return offset; } @@ -3728,7 +3729,8 @@ dissect_its_IA5String_SIZE_1_24(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *a static int dissect_its_PhoneNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_NumericString(tvb, offset, actx, tree, hf_index, - 1, 16, FALSE); + 1, 16, FALSE, + NULL); return offset; } @@ -4045,7 +4047,8 @@ dissect_its_PositioningSolutionType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_ static int dissect_its_WMInumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_IA5String(tvb, offset, actx, tree, hf_index, - 1, 3, FALSE); + 1, 3, FALSE, + NULL); return offset; } @@ -4055,7 +4058,8 @@ dissect_its_WMInumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, p static int dissect_its_VDS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_IA5String(tvb, offset, actx, tree, hf_index, - 6, 6, FALSE); + 6, 6, FALSE, + NULL); return offset; } @@ -5469,7 +5473,8 @@ dissect_itsv1_BOOLEAN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, p static int dissect_itsv1_IA5String_SIZE_1_24(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_IA5String(tvb, offset, actx, tree, hf_index, - 1, 24, FALSE); + 1, 24, FALSE, + NULL); return offset; } @@ -5786,7 +5791,8 @@ dissect_itsv1_PositioningSolutionType(tvbuff_t *tvb _U_, int offset _U_, asn1_ct static int dissect_itsv1_WMInumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_IA5String(tvb, offset, actx, tree, hf_index, - 1, 3, FALSE); + 1, 3, FALSE, + NULL); return offset; } @@ -5796,7 +5802,8 @@ dissect_itsv1_WMInumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, static int dissect_itsv1_VDS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_IA5String(tvb, offset, actx, tree, hf_index, - 6, 6, FALSE); + 6, 6, FALSE, + NULL); return offset; } @@ -7059,7 +7066,8 @@ dissect_dsrc_LayerID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pr static int dissect_dsrc_DescriptiveName(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_IA5String(tvb, offset, actx, tree, hf_index, - 1, 63, FALSE); + 1, 63, FALSE, + NULL); return offset; } @@ -8451,7 +8459,8 @@ dissect_dsrc_RoadSegmentList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx static int dissect_dsrc_IA5String_SIZE_1_255(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_IA5String(tvb, offset, actx, tree, hf_index, - 1, 255, FALSE); + 1, 255, FALSE, + NULL); return offset; } @@ -15180,7 +15189,8 @@ dissect_tistpg_UNVehicleClassifcation(tvbuff_t *tvb _U_, int offset _U_, asn1_ct static int dissect_tistpg_CustomerContract(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_IA5String(tvb, offset, actx, tree, hf_index, - 1, 32, FALSE); + 1, 32, FALSE, + NULL); return offset; } @@ -16325,7 +16335,8 @@ dissect_evcsn_UTF8String(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_ static int dissect_evcsn_NumericString_SIZE_1_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_NumericString(tvb, offset, actx, tree, hf_index, - 1, 16, FALSE); + 1, 16, FALSE, + NULL); return offset; } @@ -16670,7 +16681,8 @@ dissect_evrsr_PreReservationRequestMessage(tvbuff_t *tvb _U_, int offset _U_, as static int dissect_evrsr_Reservation_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_VisibleString(tvb, offset, actx, tree, hf_index, - 8, 8, FALSE); + 8, 8, FALSE, + NULL); return offset; } @@ -16810,7 +16822,8 @@ dissect_evrsr_Payment_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_ static int dissect_evrsr_Pairing_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_VisibleString(tvb, offset, actx, tree, hf_index, - 1, 64, FALSE); + 1, 64, FALSE, + NULL); return offset; } @@ -16863,7 +16876,8 @@ dissect_evrsr_ReservationResponseCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ct static int dissect_evrsr_Reservation_Password(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_VisibleString(tvb, offset, actx, tree, hf_index, - 8, 8, FALSE); + 8, 8, FALSE, + NULL); return offset; } |