Wireshark  4.3.0
The Wireshark network protocol analyzer
Macros | Functions
strutil.h File Reference
#include "ws_symbol_export.h"
#include <epan/wmem_scopes.h>
#include <wsutil/str_util.h>

Go to the source code of this file.

Macros

#define FORMAT_LABEL_REPLACE_SPACE   (0x1 << 0)
 

Functions

const guchar * find_line_end (const guchar *data, const guchar *dataend, const guchar **eol)
 
WS_DLL_PUBLIC int get_token_len (const guchar *linep, const guchar *lineend, const guchar **next_token)
 
WS_DLL_PUBLIC gboolean hex_str_to_bytes (const char *hex_str, GByteArray *bytes, gboolean force_separators)
 
WS_DLL_PUBLIC gboolean hex_str_to_bytes_encoding (const char *hex_str, GByteArray *bytes, const char **endptr, const guint encoding, const gboolean fail_if_partial)
 
WS_DLL_PUBLIC gboolean uri_to_bytes (const char *uri_str, GByteArray *bytes, size_t len)
 
WS_DLL_PUBLIC gboolean uri_str_to_bytes (const char *uri_str, GByteArray *bytes)
 
WS_DLL_PUBLIC gboolean rel_oid_str_to_bytes (const char *oid_str, GByteArray *bytes, gboolean is_absolute)
 
WS_DLL_PUBLIC gboolean oid_str_to_bytes (const char *oid_str, GByteArray *bytes)
 
WS_DLL_PUBLIC GByteArray * byte_array_dup (const GByteArray *ba)
 
WS_DLL_PUBLIC gboolean byte_array_equal (GByteArray *ba1, GByteArray *ba2)
 
WS_DLL_PUBLIC gchar * xml_escape (const gchar *unescaped)
 
WS_DLL_PUBLIC guint8 * convert_string_to_hex (const char *string, size_t *nbytes)
 
WS_DLL_PUBLIC char * convert_string_case (const char *string, gboolean case_insensitive)
 
WS_DLL_PUBLIC void IA5_7BIT_decode (unsigned char *dest, const unsigned char *src, int len)
 
WS_DLL_PUBLIC size_t ws_label_strcpy (char *label_str, size_t bufsize, gsize pos, const uint8_t *str, int flags)
 
WS_DLL_PUBLIC size_t ws_label_strcat (char *label_str, size_t bufsize, const uint8_t *str, int flags)
 
WS_DLL_LOCAL guchar module_check_valid_name (const char *name, gboolean lower_only)
 

Detailed Description

String handling and conversion utilities.

Function Documentation

◆ byte_array_dup()

WS_DLL_PUBLIC GByteArray* byte_array_dup ( const GByteArray *  ba)

Create a copy of a GByteArray

Parameters
baThe byte array to be copied.
Returns
If ba exists, a freshly allocated copy. NULL otherwise.
Todo:
  • Should this be in strutil.c?

Create a copy of a GByteArray

Parameters
baThe byte array to be copied.
Returns
If ba exists, a freshly allocated copy. NULL otherwise.

◆ byte_array_equal()

WS_DLL_PUBLIC gboolean byte_array_equal ( GByteArray *  ba1,
GByteArray *  ba2 
)

Compare the contents of two GByteArrays

Parameters
ba1A byte array
ba2A byte array
Returns
If both arrays are non-NULL and their lengths are equal and their contents are equal, returns TRUE. Otherwise, returns FALSE.
Todo:
  • Should this be in strutil.c?

Compare the contents of two GByteArrays

Parameters
ba1A byte array
ba2A byte array
Returns
If both arrays are non-NULL and their lengths are equal and their contents are equal, returns TRUE. Otherwise, returns FALSE.

XXX - Should this be in strutil.c?

◆ convert_string_case()

WS_DLL_PUBLIC char* convert_string_case ( const char *  string,
gboolean  case_insensitive 
)

Prep a string for case-sensitive vs case-insensitive searching.

Parameters
stringThe search string
case_insensitiveTRUE if case-insensitive, FALSE if not
Returns
A direct copy of the string if it's a case-sensitive search and an uppercased version if not. In either case the string must be g_free()d by the caller.

◆ convert_string_to_hex()

WS_DLL_PUBLIC guint8* convert_string_to_hex ( const char *  string,
size_t *  nbytes 
)

Scan a string to make sure it's valid hex.

Parameters
stringThe string to validate
nbytesThe length of the return buffer
Returns
A pointer to a buffer containing the converted raw bytes. This buffer must be g_free()d by the caller.

◆ find_line_end()

const guchar* find_line_end ( const guchar *  data,
const guchar *  dataend,
const guchar **  eol 
)

Given a pointer into a data buffer, and to the end of the buffer, find the end of the (putative) line at that position in the data buffer.

Parameters
dataA pointer to the beginning of the data
dataendA pointer to the end of the data
eolA pointer that will receive the EOL location
Returns
A pointer to the EOL character(s) in "*eol".

◆ get_token_len()

WS_DLL_PUBLIC int get_token_len ( const guchar *  linep,
const guchar *  lineend,
const guchar **  next_token 
)

Get the length of the next token in a line, and the beginning of the next token after that (if any).

Parameters
linepA pointer to the beginning of the line
lineendA pointer to the end of the line
next_tokenReceives the location of the next token
Returns
0 if there is no next token.

◆ hex_str_to_bytes()

WS_DLL_PUBLIC gboolean hex_str_to_bytes ( const char *  hex_str,
GByteArray *  bytes,
gboolean  force_separators 
)

Turn a string of hex digits with optional separators (defined by is_byte_sep() into a byte array.

Parameters
hex_strThe string of hex digits.
bytesThe GByteArray that will receive the bytes. This must be initialized by the caller.
force_separatorsIf set to TRUE, separators MUST exist between bytes.
Returns
True if the string was converted successfully

◆ oid_str_to_bytes()

WS_DLL_PUBLIC gboolean oid_str_to_bytes ( const char *  oid_str,
GByteArray *  bytes 
)

Turn a OID string representation (dot notation) into a byte array.

Parameters
oid_strThe OID string (dot notaion).
bytesThe GByteArray that will receive the bytes. This must be initialized by the caller.
Returns
True if the string was converted successfully

◆ rel_oid_str_to_bytes()

WS_DLL_PUBLIC gboolean rel_oid_str_to_bytes ( const char *  oid_str,
GByteArray *  bytes,
gboolean  is_absolute 
)

Turn a OID string representation (dot notation) into a byte array.

Parameters
oid_strThe OID string (dot notaion).
bytesThe GByteArray that will receive the bytes. This must be initialized by the caller.
is_absoluteTrue if this is an absolute OID; false for relative OID.
Returns
True if the string was converted successfully

◆ uri_str_to_bytes()

WS_DLL_PUBLIC gboolean uri_str_to_bytes ( const char *  uri_str,
GByteArray *  bytes 
)

Turn an RFC 3986 percent-encoded string into a byte array.

Parameters
uri_strThe string of hex digits.
bytesThe GByteArray that will receive the bytes. This must be initialized by the caller.
Returns
True if the string was converted successfully

◆ uri_to_bytes()

WS_DLL_PUBLIC gboolean uri_to_bytes ( const char *  uri_str,
GByteArray *  bytes,
size_t  len 
)

Turn an RFC 3986 percent-encoded array of characters, not necessarily null-terminated, into a byte array.

Parameters
uri_strThe string of hex digits.
bytesThe GByteArray that will receive the bytes. This must be initialized by the caller.
Returns
True if the string was converted successfully

◆ xml_escape()

WS_DLL_PUBLIC gchar* xml_escape ( const gchar *  unescaped)

Return a XML escaped representation of the unescaped string. The returned string must be freed when no longer in use.

Parameters
unescapedThe unescaped string
Returns
An XML-escaped representation of the input string