epan: Mark tvb_get_const_stringz() as deprecated

The function tvb_get_const_stringz() does not check for a string
encoding and returns a pointer to a byte array. For this reason
it should not be used. Prefer other functions that return a
valid UTF-8 string from a source encoding or use tvb_get_ptr()
to fetch a byte pointer.
This commit is contained in:
João Valverde 2022-10-03 22:03:07 +01:00
parent 1b12dc4b9e
commit 597f020793
2 changed files with 9 additions and 15 deletions

View File

@ -463,20 +463,6 @@ the string, including the terminating null.
The buffer is allocated in the given wmem scope (see README.wmem for more
information).
const guint8 *tvb_get_const_stringz(tvbuff_t *tvb, const gint offset, gint *lengthp);
Returns a null-terminated const buffer containing data from the
specified tvbuff, starting at the specified offset, and containing all
bytes from the tvbuff up to and including a terminating null character
in the tvbuff. "*lengthp" will be set to the length of the string,
including the terminating null.
You do not need to free() this buffer; it will happen automatically once
the next packet is dissected. This function is slightly more efficient
than the others because it does not allocate memory and copy the string,
but it does not do any mapping to UTF-8 or checks for valid octet
sequences.
gint tvb_get_nstringz(tvbuff_t *tvb, const gint offset, const guint bufsize, guint8* buffer);
gint tvb_get_nstringz0(tvbuff_t *tvb, const gint offset, const guint bufsize, guint8* buffer);

View File

@ -771,8 +771,16 @@ WS_DLL_PUBLIC guint8 *tvb_get_stringz_enc(wmem_allocator_t *scope,
* of the string, in whatever encoding they happen to be in, and, if
* the string is not valid in that encoding, with invalid octet sequences
* as they are in the packet.
*
* This function is deprecated because it does no validation of the string
* encoding. Do not use in new code. Prefer other APIs such as:
* tvb_get_stringz_enc()
* proto_tree_add_item_ret_string_and_length()
* tvb_strsize() and validate the pointed to memory region manually.
*/
WS_DLL_PUBLIC const guint8 *tvb_get_const_stringz(tvbuff_t *tvb,
WS_DLL_PUBLIC
WS_DEPRECATED_X("Use APIs that return a valid UTF-8 string instead")
const guint8 *tvb_get_const_stringz(tvbuff_t *tvb,
const gint offset, gint *lengthp);
/** Looks for a stringz (NUL-terminated string) in tvbuff and copies