2013/12/18 Pascal Quantin <pascal.quan...@gmail.com>

>
> Le 18 déc. 2013 à 00:55, Evan Huus <eapa...@gmail.com> a écrit :
>
> > On Tue, Dec 17, 2013 at 6:13 PM, Pascal Quantin
> > <pascal.quan...@gmail.com> wrote:
> >> Hi Even,
> >>
> >> in 3GPP world BCD encoding starts with the least significant nibble.
> That's
> >> why tvb_bcd_dig_to_wmwm_packet_str() behaves like this. Changing it to
> >> decode the most significant nibble first would break all the dissectors
> >> currently using this function.
> >
> > OK, just wondering.
> >
> >> The "stop condition" for the most significant nibble set to 0xf is just
> to
> >> detect the filler digit in case you have an odd number of digits. In
> case of
> >> even number, the length itself is sufficient and you do not need a
> filler,
> >> so no "stop condition" is required.
> >
> > In that case, what should the decoder do if it encounters a 0xf nibble
> > embedded in a value (ie due to a malformed packet instead of
> > indicating a stop condition)? Currently our behaviour is rather
> > undefined:
> > - if 0xf is in the high nibble, decoding stops even though the whole
> > length has not yet been decoded (ie if we pass a len of 12 but the
> > very first nibble is 0xf then we don't decode anything at all)
> > - if 0xf is in the low nibble, we read past the end of the digit array
> > (dgt_set_t) and decode it as a garbage value
> >
> > Throwing an exception seems a little extreme, but I'm not sure what else
> to do.
>
> What about adding a new entry to the dht_set_t array and display a '?'
> like what we do for 0xa-0xe values?
>

BTW we have exactly the same bug in my_dgt_tbcd_unpack() function located
in packet-gsm_a_common.c file, as it is almost a copy/paste.


> >
> >> 2013/12/17 Evan Huus <eapa...@gmail.com>
> >>>
> >>> Alexis's ASAN build recently caught an error in
> >>> tvb_bcd_dig_to_wmem_packet_str in which it appears that if the least
> >>> significant nibble of the decoded byte is 0xf then we read one element
> >>> past the end of the 14-element digit array.
> >>>
> >>> If the most significant nibble is 0xf we treat that as a stop
> >>> condition. Is the correct approach to treat a least significant nibble
> >>> of 0xf as a stop condition also?
> >>>
> >>> While in the neighbourhood - shouldn't we be decoding the more
> >>> significant nibble first, not second? Wiki states that most BCD
> >>> implementations are big-endian...
> >>>
> >>> Cheers,
> >>> Evan
> >>>
> >>>
> ___________________________________________________________________________
> >>> Sent via:    Wireshark-dev mailing list <wireshark-dev@wireshark.org>
> >>> Archives:    http://www.wireshark.org/lists/wireshark-dev
> >>> Unsubscribe: https://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:    http://www.wireshark.org/lists/wireshark-dev
> >> Unsubscribe: https://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:    http://www.wireshark.org/lists/wireshark-dev
> > Unsubscribe: https://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:    http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
             mailto:wireshark-dev-requ...@wireshark.org?subject=unsubscribe

Reply via email to