forked from osmocom/wireshark
wsutil: Add max length argument to bytes_to_str()
This commit is contained in:
parent
1ff6cc7b27
commit
f0b02dd0ff
|
@ -10,8 +10,8 @@ libwsutil.so.0 libwsutil0 #MINVER#
|
||||||
bitswap_buf_inplace@Base 1.12.0~rc1
|
bitswap_buf_inplace@Base 1.12.0~rc1
|
||||||
bytes_to_hexstr@Base 3.5.0
|
bytes_to_hexstr@Base 3.5.0
|
||||||
bytes_to_hexstr_punct@Base 3.5.0
|
bytes_to_hexstr_punct@Base 3.5.0
|
||||||
bytes_to_str@Base 3.5.0
|
bytes_to_str_max@Base 3.5.0
|
||||||
bytestring_to_str@Base 3.5.0
|
bytestring_to_str_max@Base 3.5.0
|
||||||
codec_decode@Base 3.1.0
|
codec_decode@Base 3.1.0
|
||||||
codec_get_channels@Base 3.1.0
|
codec_get_channels@Base 3.1.0
|
||||||
codec_get_frequency@Base 3.1.0
|
codec_get_frequency@Base 3.1.0
|
||||||
|
|
|
@ -94,9 +94,6 @@ bytes_to_hexstr_punct(char *out, const guint8 *ad, size_t len, char punct)
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Max string length for displaying byte string. */
|
|
||||||
#define MAX_BYTE_STR_LEN 72
|
|
||||||
|
|
||||||
/* Routine to convert a sequence of bytes to a hex string, one byte/two hex
|
/* Routine to convert a sequence of bytes to a hex string, one byte/two hex
|
||||||
* digits at at a time, with a specified punctuation character between
|
* digits at at a time, with a specified punctuation character between
|
||||||
* the bytes.
|
* the bytes.
|
||||||
|
@ -105,7 +102,7 @@ bytes_to_hexstr_punct(char *out, const guint8 *ad, size_t len, char punct)
|
||||||
* the resulting string is (len-1) bytes shorter)
|
* the resulting string is (len-1) bytes shorter)
|
||||||
*/
|
*/
|
||||||
gchar *
|
gchar *
|
||||||
bytestring_to_str(wmem_allocator_t *scope, const guint8 *ad, size_t len, const char punct)
|
bytestring_to_str_max(wmem_allocator_t *scope, const guint8 *ad, size_t len, const char punct, size_t max)
|
||||||
{
|
{
|
||||||
gchar *buf;
|
gchar *buf;
|
||||||
size_t buflen = len;
|
size_t buflen = len;
|
||||||
|
@ -123,15 +120,18 @@ bytestring_to_str(wmem_allocator_t *scope, const guint8 *ad, size_t len, const c
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!punct)
|
if (!punct)
|
||||||
return bytes_to_str(scope, ad, len);
|
return bytes_to_str_max(scope, ad, len, max);
|
||||||
|
|
||||||
buf=(gchar *)wmem_alloc(scope, MAX_BYTE_STR_LEN+3+1);
|
if (max > len * 3)
|
||||||
if (buflen > MAX_BYTE_STR_LEN/3) { /* bd_len > 16 */
|
max = len * 3;
|
||||||
|
|
||||||
|
buf=(gchar *)wmem_alloc(scope, max+3+1);
|
||||||
|
if (buflen > max/3) {
|
||||||
truncated = 1;
|
truncated = 1;
|
||||||
buflen = MAX_BYTE_STR_LEN/3;
|
buflen = max/3;
|
||||||
}
|
}
|
||||||
|
|
||||||
buf_ptr = bytes_to_hexstr_punct(buf, ad, buflen, punct); /* max MAX_BYTE_STR_LEN-1 bytes */
|
buf_ptr = bytes_to_hexstr_punct(buf, ad, buflen, punct); /* maximum max-1 bytes */
|
||||||
|
|
||||||
if (truncated) {
|
if (truncated) {
|
||||||
*buf_ptr++ = punct; /* 1 byte */
|
*buf_ptr++ = punct; /* 1 byte */
|
||||||
|
@ -143,7 +143,7 @@ bytestring_to_str(wmem_allocator_t *scope, const guint8 *ad, size_t len, const c
|
||||||
}
|
}
|
||||||
|
|
||||||
char *
|
char *
|
||||||
bytes_to_str(wmem_allocator_t *scope, const guint8 *bd, size_t bd_len)
|
bytes_to_str_max(wmem_allocator_t *scope, const guint8 *bd, size_t bd_len, size_t max)
|
||||||
{
|
{
|
||||||
gchar *cur;
|
gchar *cur;
|
||||||
gchar *cur_ptr;
|
gchar *cur_ptr;
|
||||||
|
@ -159,10 +159,13 @@ bytes_to_str(wmem_allocator_t *scope, const guint8 *bd, size_t bd_len)
|
||||||
return wmem_strdup(scope, "(null pointer)");
|
return wmem_strdup(scope, "(null pointer)");
|
||||||
}
|
}
|
||||||
|
|
||||||
cur=(gchar *)wmem_alloc(scope, MAX_BYTE_STR_LEN+3+1);
|
if (max > bd_len * 2)
|
||||||
if (bd_len > MAX_BYTE_STR_LEN/2) { /* bd_len > 24 */
|
max = bd_len * 2;
|
||||||
|
|
||||||
|
cur=(gchar *)wmem_alloc(scope, max+3+1);
|
||||||
|
if (bd_len > max/2) {
|
||||||
truncated = 1;
|
truncated = 1;
|
||||||
bd_len = MAX_BYTE_STR_LEN/2;
|
bd_len = max/2;
|
||||||
}
|
}
|
||||||
|
|
||||||
cur_ptr = bytes_to_hexstr(cur, bd, bd_len); /* max MAX_BYTE_STR_LEN bytes */
|
cur_ptr = bytes_to_hexstr(cur, bd, bd_len); /* max MAX_BYTE_STR_LEN bytes */
|
||||||
|
|
|
@ -43,6 +43,9 @@ WS_DLL_PUBLIC char *bytes_to_hexstr(char *out, const guint8 *ad, size_t len);
|
||||||
*/
|
*/
|
||||||
WS_DLL_PUBLIC char *bytes_to_hexstr_punct(char *out, const guint8 *ad, size_t len, char punct);
|
WS_DLL_PUBLIC char *bytes_to_hexstr_punct(char *out, const guint8 *ad, size_t len, char punct);
|
||||||
|
|
||||||
|
/* Max string length for displaying byte string. */
|
||||||
|
#define MAX_BYTE_STR_LEN 72
|
||||||
|
|
||||||
/** Turn an array of bytes into a string showing the bytes in hex,
|
/** Turn an array of bytes into a string showing the bytes in hex,
|
||||||
* separated by a punctuation character.
|
* separated by a punctuation character.
|
||||||
*
|
*
|
||||||
|
@ -50,20 +53,26 @@ WS_DLL_PUBLIC char *bytes_to_hexstr_punct(char *out, const guint8 *ad, size_t le
|
||||||
* @param ad A pointer to the byte array
|
* @param ad A pointer to the byte array
|
||||||
* @param len The length of the byte array
|
* @param len The length of the byte array
|
||||||
* @param punct The punctuation character
|
* @param punct The punctuation character
|
||||||
|
* @param max Maximum string length, plus ellipsis if present
|
||||||
* @return A pointer to the formatted string
|
* @return A pointer to the formatted string
|
||||||
*
|
*
|
||||||
* @see bytes_to_str()
|
* @see bytes_to_str()
|
||||||
*/
|
*/
|
||||||
WS_DLL_PUBLIC gchar *bytestring_to_str(wmem_allocator_t *scope, const guint8 *ad, size_t len, const char punct);
|
WS_DLL_PUBLIC gchar *bytestring_to_str_max(wmem_allocator_t *scope, const guint8 *ad, size_t len, const char punct, size_t max);
|
||||||
|
|
||||||
|
#define bytestring_to_str(scope, ad, len, punct) bytestring_to_str_max(scope, ad, len, punct, MAX_BYTE_STR_LEN)
|
||||||
|
|
||||||
/** Turn an array of bytes into a string showing the bytes in hex.
|
/** Turn an array of bytes into a string showing the bytes in hex.
|
||||||
*
|
*
|
||||||
* @param scope memory allocation scheme used
|
* @param scope memory allocation scheme used
|
||||||
* @param bd A pointer to the byte array
|
* @param bd A pointer to the byte array
|
||||||
* @param bd_len The length of the byte array
|
* @param bd_len The length of the byte array
|
||||||
|
* @param max Maximum string length, plus ellipsis if present
|
||||||
* @return A pointer to the formatted string
|
* @return A pointer to the formatted string
|
||||||
*/
|
*/
|
||||||
WS_DLL_PUBLIC char *bytes_to_str(wmem_allocator_t *scope, const guint8 *bd, size_t bd_len);
|
WS_DLL_PUBLIC char *bytes_to_str_max(wmem_allocator_t *scope, const guint8 *bd, size_t bd_len, size_t max);
|
||||||
|
|
||||||
|
#define bytes_to_str(scope, bd, len) bytes_to_str_max(scope, bd, len, MAX_BYTE_STR_LEN)
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue