Ethereal-cvs: [Ethereal-cvs] cvs commit: ethereal/plugins/gryphon packet-gryphon.c

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

From: Guy Harris <guy@xxxxxxxxxxxxxxxxx>
Date: Thu, 12 Jun 2003 03:33:32 -0500 (CDT)
guy         2003/06/12 03:33:32 CDT

  Modified files:
    plugins/gryphon      packet-gryphon.c 
  Log:
  Add new routines:
  
  	tvb_get_string() - takes a tvbuff, an offset, and a length as
  	arguments, allocates a buffer big enough to hold a string with
  	the specified number of bytes plus an added null terminator
  	(i.e., length+1), copies the specified number of bytes from the
  	tvbuff, at the specified offset, to that buffer and puts in a
  	null terminator, and returns a pointer to that buffer (or throws
  	an exception before allocating the buffer if that many bytes
  	aren't available in the tvbuff);
  
  	tvb_get_stringz() - takes a tvbuff, an offset, and a pointer to
  	a "gint" as arguments, gets the size of the null-terminated
  	string starting at the specified offset in the tvbuff (throwing
  	an exception if the null terminator isn't found), allocates a
  	buffer big enough to hold that string, copies the string to that
  	buffer, and returns a pointer to that buffer and stores the
  	length of the string (including the terminating null) in the
  	variable pointed to by the "gint" pointer.
  
  Replace many pieces of code allocating a buffer and copying a string
  with calls to "tvb_get_string()" (for one thing, "tvb_get_string()"
  doesn't require you to remember that the argument to
  "tvb_get_nstringz0()" is the size of the buffer into which you're
  copying the string, which might be the length of the string to be copied
  *plus 1*).
  
  Don't use fixed-length buffers for null-terminated strings (even if the
  code that generates those packets has a #define to limit the length of
  the string).  Use "tvb_get_stringz()", instead.
  
  In some cases where a value is fetched but is only used to pass an
  argument to a "proto_tree_add_XXX" routine, use "proto_tree_add_item()"
  instead.
  
  Revision  Changes    Path
  1.37      +5 -5      ethereal/plugins/gryphon/packet-gryphon.c