Hi Pavel, 2016-12-22 17:20 GMT+01:00 Pavel Strnad <strn...@tiscali.cz>:
> Hi Pascal, > Thank You for fast response and clear comments. > > Would it make sense to implement extra dissect_per_semi_constrained_ > integer? > I can try to implement dissect_per_semi_constrained_integer (tvbuff_t > *tvb, > guint32 offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index, guint32 > min, guint32 max, guint32 *value, gboolean has_extension, gboolean > lb_infinite). > > Extra parameter will allow us to distinguish both cases where either > min(lb_infinite=TRUE) or max(lb_infinite=FALSE) is set to NO_BOUND? > I can do the same for 64b version. > Afterwards I will need to update asn2wrs accordingly to have this issue > fixed. > > This will not sort out the case of direct callers to > dissect_per_constrained_integer. > That's my main concern. I have no reviewed carefully callers to see if min or max could be unbounded or not, so I'm not sure what is the easiest: change the existing function signature with 2 extra booleans, or review all code paths to put where needed the new one. Worse, I realize that I forgot to talk about ASN.1 BER encoding (as asn2wrs also supports it). I know nothing about this encoding format but it also uses the NO_BOUND magic define... We must ensure that we do not break it while modifying asn2wrs (or maybe fix BER decoder if needs be ? :) ). Pascal. > What do You think? > > Best Regards, > Pavel > > ----------------------------------------------------------------------- > Date: Wed, 21 Dec 2016 16:07:02 +0100 > From: Pascal Quantin <pascal.quan...@gmail.com> > To: Developer support list for Wireshark <wireshark-dev@wireshark.org> > Subject: Re: [Wireshark-dev] dissect_per_constrained_integer() with > no_bound (MAX in ASN.1) > Message-ID: > <CAGka-82MWxYv2aj0WJRL_p9ooEmBRpo7_sAH7KTpHc6C0vCFYA@ > mail.gmail.com> > Content-Type: text/plain; charset="utf-8" > > Hi Pavel, > > 2016-12-21 15:37 GMT+01:00 Pavel Strnad <strn...@tiscali.cz>: > > > Hello, > > > > I am trying to understand the difference in usage of NO_BOUND or > > UINT_MAX in the place of max parameter in > > dissect_per_constrained_integer() function. In my case aligned PER > variant. > > > > > > > > From packet-per.h: > > > > #define NO_BOUND -1 > > > > guint32 dissect_per_constrained_integer(tvbuff_t *tvb, guint32 offset, > > asn1_ctx_t *actx, proto_tree *tree, int hf_index, guint32 min, guint32 > > max, > > guint32 *value, gboolean has_extension); > > > > > > > > Based on that it looks like that there is no different dissection of > > following two asn.1 definitions? > > > > Correct, semi-constrained integer does not seem to be managed properly. > This matches the comment found in line 1283. > > > 1) seconds INTEGER (0..4294967295) > > > > 2) seconds INTEGER (0..MAX) where MAX translates to > > NO_BOUND=4294967295 using asn2wrs > > > > > > > > Reading X.691 (aligned PER) wireshark seems to dissect well the 1st > > case that is using size constraint but not the 2nd case > > > > where semi-constraint size is used and the length determinant should > > include padding bits in the case of aligned PER. > > > > > > > > I would like to try to fix it myself but will need some hint how to > > differentiate these two cases and keep API unchanged? > > > > IMHO you can't without changing the API. Maybe we would need to extra > booleans indicating whether the min and / or max values are bounded or not, > and adapt asn2wrs generator accordingly. This way we could drop the > NO_BOUND > define > > Note that this sounds like a non trivial project because: > - as indicated in the comments, dissect_per_constrained_integer only > handle > 32 bits integers and dissect_per_constrained_integer_64b only handles 64 > bits integers, so both needs to be adapted > - MIN or MAX parameters do not seem properly handled in other types also, > and any change done in dissect_per_constrained_integer(_64b) needs to be > reflected in the caller functions and any other making use of NO_BOUND > > Regards, > Pascal. > > ____________________________________________________________ > _______________ > Sent via: Wireshark-dev mailing list <wireshark-dev@wireshark.org> > Archives: https://www.wireshark.org/lists/wireshark-dev > Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-dev > mailto:wireshark-dev-requ...@wireshark.org?subject= > unsubscribe >
___________________________________________________________________________ Sent via: Wireshark-dev mailing list <wireshark-dev@wireshark.org> Archives: https://www.wireshark.org/lists/wireshark-dev Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-dev mailto:wireshark-dev-requ...@wireshark.org?subject=unsubscribe