Huge thanks to our Platinum Members Endace and LiveAction,
and our Silver Member Veeam, for supporting the Wireshark Foundation and project.

Wireshark-dev: Re: [Wireshark-dev] [Wireshark-commits] rev 37201: /trunk/epan/dissectors/ /trun

From: Jeff Morriss <jeff.morriss.ws@xxxxxxxxx>
Date: Tue, 17 May 2011 12:45:08 -0400
Maynard, Chris wrote:
-----Original Message-----
From: wireshark-commits-bounces@xxxxxxxxxxxxx [mailto:wireshark-
commits-bounces@xxxxxxxxxxxxx] On Behalf Of morriss@xxxxxxxxxxxxx
Sent: Tuesday, May 17, 2011 12:08 PM
To: wireshark-commits@xxxxxxxxxxxxx
Subject: [Wireshark-commits] rev 37201: /trunk/epan/dissectors/
/trunk/epan/dissectors/: packet-ncp2222.inc

http://anonsvn.wireshark.org/viewvc/viewvc.cgi?view=rev&revision=37201

User: morriss
Date: 2011/05/17 09:07 AM

Log:
 Avoid passing a NULL string pointer to format routines: some libc's
(e.g.,
 Solaris') will seg-fault on that.

Directory: /trunk/epan/dissectors/
  Changes    Path                  Action
  +8 -4      packet-ncp2222.inc    Modified


Would it be better to use val_to_str() or val_to_str_const() in cases such as this?

Yes, either would probably work here: NCP2222's get_string() (which is used to generate the string most of the time) also returns ep_alloc'd memory (as val_to_str() may).

What about changing match_strval() to behave like val_to_str() does (i.e., make IT handle the NULL case), and then just have val_to_str() return match_strval()'s guaranteed non-NULL return value unconditionally?  And also introduce a match_strval_const() counterpart for val_to_str_const().

The problem with changing match_strval() is there's a bunch of code like:

    if (match_strval(type, a11_types) == NULL)
        return 0;       /* not a known message type */