diff --git a/src/output-json-http.c b/src/output-json-http.c index 85d813f275..b6d6fcc997 100644 --- a/src/output-json-http.c +++ b/src/output-json-http.c @@ -238,14 +238,12 @@ static void EveHttpLogJSONBasic(SCJsonBuilder *js, htp_tx_t *tx) if (htp_tx_response_headers(tx) != NULL) { const htp_header_t *h_content_type = htp_tx_response_header(tx, "content-type"); if (h_content_type != NULL) { - const size_t size = htp_header_value_len(h_content_type) * 2 + 1; - char string[size]; - BytesToStringBuffer(htp_header_value_ptr(h_content_type), - htp_header_value_len(h_content_type), string, size); - char *p = strchr(string, ';'); + uint32_t len = (uint32_t)htp_header_value_len(h_content_type); + const uint8_t *p = memchr(htp_header_value_ptr(h_content_type), ';', len); if (p != NULL) - *p = '\0'; - SCJbSetString(js, "http_content_type", string); + len = (uint32_t)(p - htp_header_value_ptr(h_content_type)); + SCJbSetStringFromBytes( + js, "http_content_type", htp_header_value_ptr(h_content_type), len); } const htp_header_t *h_content_range = htp_tx_response_header(tx, "content-range"); if (h_content_range != NULL) { diff --git a/src/util-byte.c b/src/util-byte.c index a0cb189460..a08b54fd5e 100644 --- a/src/util-byte.c +++ b/src/util-byte.c @@ -72,53 +72,6 @@ char *BytesToString(const uint8_t *bytes, size_t nbytes) return string; } -/** \brief Turn byte array into string. - * - * All non-printables are copied over, except for '\0', which is - * turned into literal \0 in the string. - * - * \param bytes byte array - * \param nbytes number of bytes - * \param outstr[out] buffer to fill - * \param outlen size of outstr. Must be at least 2 * nbytes + 1 in size - */ -void BytesToStringBuffer(const uint8_t *bytes, size_t nbytes, char *outstr, size_t outlen) -{ - DEBUG_VALIDATE_BUG_ON(outlen < (nbytes * 2 + 1)); - - size_t n = nbytes + 1; - size_t nulls = 0; - - size_t u; - for (u = 0; u < nbytes; u++) { - if (bytes[u] == '\0') - nulls++; - } - n += nulls; - - char string[n]; - - if (nulls == 0) { - /* no nulls */ - memcpy(string, bytes, nbytes); - string[nbytes] = '\0'; - } else { - /* nulls present */ - char *dst = string; - for (u = 0; u < nbytes; u++) { - if (bytes[u] == '\0') { - *dst++ = '\\'; - *dst++ = '0'; - } else { - *dst++ = bytes[u]; - } - } - *dst = '\0'; - } - - strlcpy(outstr, string, outlen); -} - int ByteExtractUint64(uint64_t *res, int e, uint16_t len, const uint8_t *bytes) { uint64_t i64; diff --git a/src/util-byte.h b/src/util-byte.h index eca7b47f9e..43452094f7 100644 --- a/src/util-byte.h +++ b/src/util-byte.h @@ -81,7 +81,6 @@ * \return string nul-terminated string or NULL on error */ char *BytesToString(const uint8_t *bytes, size_t nbytes); -void BytesToStringBuffer(const uint8_t *bytes, size_t nbytes, char *outstr, size_t outlen); /** * Extract bytes from a byte string and convert to a unint64_t.