Ethereal-dev: [Ethereal-dev] Re: rev 14009: /trunk/epan/dissectors/: packet-ncp2222.inc

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: ronnie sahlberg <ronniesahlberg@xxxxxxxxx>
Date: Thu, 7 Apr 2005 04:33:20 -0400
checked in


On Thu, 07 Apr 2005 10:17:03 +0200, Greg Morris <gmorris@xxxxxxxxxx> wrote:
> Well, the access to the fvalue_ functions was added several years back by
> Gilbert to allow the ncp2222.py Python script to display column data from
> the current request packet. In the Python script each NCP request decode has
> the ability to pass an info_str. This string is evaluated in
> packet-ncp2222.inc and then echoed to the info column data. Perhaps we
> should consult Gilbert regarding those changes.
>  
>  pkt.Request(8), [
>  ], info_str=(Path, "Release Lock on: %s", "/%s"))
> 
> As for the current update with the section added...
>  
> #ifdef FAKE_TREE_IS_VISIBLE
>         PTREE_DATA(ncp_tree)->visible=1;
> #endif
>  
> This generates a crash when you perform a find for a string in the packet
> list. This is due to ncp_tree being null. So each of these ifdef conditions
> needs to have the following modification...
>  
> #ifdef FAKE_TREE_IS_VISIBLE
>     if (ncp_tree) {
>         PTREE_DATA(ncp_tree)->visible=1;
>     }
> #endif
> 
> To duplicate the crash in the current build.
> Open any trace that includes NCP packet data. (I can supply one if needed)
> click on the find a packet item in the toolbar or use the Ethereal menu
> "Edit", "Find Packet"
> In the Find Packet window select Find by String, Search in Packet list, and
> enter any data to find in the edit box, finally click the Find button
>  
> The crash will occur on the initial find if the string cannot be found or on
> subsequent finds (find next) <Ctl><N>.
>  
> Diff is attached. Made against current SVN.
>  
> Greg
> 
> >>> sahlberg@xxxxxxxxxxxx 4/4/2005 6:15 AM >>>
> 
> User: sahlberg
> Date: 2005/04/03 11:14 PM
> 
> Log:
> the netware dissector is the only dissector that accesses fvalue_ functions
> directly.
> 
> this made it crash for some packets when the filter speedup patch was
> enabled, since some of these finfo nodes did no longer exist.
> 
> as far as i can tell the only other instances of fvalue_ usage is from some
> tap based functions but all those do take care to make sure that the fields
> being accessed are all part of a filter, and will thus never be optimized
> away.
> 
> The patch does two things
> 
> 1, refactor the code but do not change the logic to reduce the number of
> places where the external fvalue_ functions are called from.
> 
> 2, add code to force the tree to be visible (and thus change the code) so
> that the speedup patch will not optimize these fiuelds away.
> 
> Directory: /trunk/epan/dissectors/
>   Changes    Path                  Action
>   +68 -13    packet-ncp2222.inc    Modified
> 
> 
> 
> http://anonsvn.ethereal.com/viewcvs/viewcvs.py?rev=14009&view=rev
> 
> _______________________________________________
> Ethereal-cvs mailing list
> Ethereal-cvs@xxxxxxxxxxxx
> http://www.ethereal.com/mailman/listinfo/ethereal-cvs
> 
> 
> 
>