#define htp_tx_response_progress(tx) tx->response_progress
#define htp_tx_response_protocol_number(tx) tx->response_protocol_number
+#define htp_tx_request_header(tx, header) htp_table_get_c(tx->request_headers, header)
+#define htp_tx_response_header(tx, header) htp_table_get_c(tx->response_headers, header)
+
bstr *SCHTPGenerateNormalizedUri(htp_tx_t *tx, htp_uri_t *uri, bool uri_include_all);
#endif /* SURICATA_APP_LAYER_HTP_LIBHTP__H */
htp_header_t *h_xff = NULL;
if (htp_tx_request_headers(tx) != NULL) {
- h_xff = htp_table_get_c(htp_tx_request_headers(tx), xff_cfg->header);
+ h_xff = htp_tx_request_header(tx, xff_cfg->header);
}
if (h_xff != NULL && bstr_len(h_xff->value) >= XFF_CHAIN_MINLEN &&
case HTP_STREAM_STATE_TUNNEL:
tx = htp_connp_get_out_tx(hstate->connp);
if (tx != NULL && htp_tx_response_status_number(tx) == 101) {
- htp_header_t *h =
- (htp_header_t *)htp_table_get_c(htp_tx_response_headers(tx), "Upgrade");
+ htp_header_t *h = (htp_header_t *)htp_tx_response_header(tx, "Upgrade");
if (h == NULL) {
break;
}
*/
static int HtpRequestBodySetupMultipart(htp_tx_t *tx, HtpTxUserData *htud)
{
- htp_header_t *h = (htp_header_t *)htp_table_get_c(htp_tx_request_headers(tx), "Content-Type");
+ htp_header_t *h = (htp_header_t *)htp_tx_request_header(tx, "Content-Type");
if (h != NULL && bstr_len(h->value) > 0) {
htud->mime_state = SCMimeStateInit(bstr_ptr(h->value), (uint32_t)bstr_len(h->value));
if (htud->mime_state) {
size_t filename_len = 0;
/* try Content-Disposition header first */
- htp_header_t *h =
- (htp_header_t *)htp_table_get_c(htp_tx_response_headers(tx), "Content-Disposition");
+ htp_header_t *h = (htp_header_t *)htp_tx_response_header(tx, "Content-Disposition");
if (h != NULL && bstr_len(h->value) > 0) {
/* parse content-disposition */
(void)HTTPParseContentDispositionHeader((uint8_t *)"filename=", 9,
if (filename != NULL) {
// set range if present
- htp_header_t *h_content_range =
- htp_table_get_c(htp_tx_response_headers(tx), "content-range");
+ htp_header_t *h_content_range = htp_tx_response_header(tx, "content-range");
if (filename_len > SC_FILENAME_MAX) {
// explicitly truncate the file name if too long
filename_len = SC_FILENAME_MAX;
if (htp_tx_request_headers(tx) == NULL)
return NULL;
- htp_header_t *h = (htp_header_t *)htp_table_get_c(htp_tx_request_headers(tx), "Cookie");
+ htp_header_t *h = (htp_header_t *)htp_tx_request_header(tx, "Cookie");
if (h == NULL || h->value == NULL) {
SCLogDebug("HTTP cookie header not present in this request");
return NULL;
if (htp_tx_response_headers(tx) == NULL)
return NULL;
- htp_header_t *h =
- (htp_header_t *)htp_table_get_c(htp_tx_response_headers(tx), "Set-Cookie");
+ htp_header_t *h = (htp_header_t *)htp_tx_response_header(tx, "Set-Cookie");
if (h == NULL || h->value == NULL) {
SCLogDebug("HTTP cookie header not present in this request");
return NULL;
if (htp_tx_request_headers(tx) == NULL)
return NULL;
- htp_header_t *h = (htp_header_t *)htp_table_get_c(htp_tx_request_headers(tx), HEADER_NAME);
+ htp_header_t *h = (htp_header_t *)htp_tx_request_header(tx, HEADER_NAME);
if (h == NULL || h->value == NULL) {
SCLogDebug("HTTP %s header not present in this request",
HEADER_NAME);
if (htp_tx_response_headers(tx) == NULL)
return NULL;
- htp_header_t *h = (htp_header_t *)htp_table_get_c(htp_tx_response_headers(tx), HEADER_NAME);
+ htp_header_t *h = (htp_header_t *)htp_tx_response_header(tx, HEADER_NAME);
if (h == NULL || h->value == NULL) {
SCLogDebug("HTTP %s header not present in this request",
HEADER_NAME);
if (htp_tx_request_headers(tx) == NULL)
return NULL;
- htp_header_t *h = (htp_header_t *)htp_table_get_c(htp_tx_request_headers(tx), "Host");
+ htp_header_t *h = (htp_header_t *)htp_tx_request_header(tx, "Host");
if (h == NULL || h->value == NULL)
return NULL;
if (htp_tx_request_headers(tx) == NULL)
return NULL;
- htp_header_t *h = (htp_header_t *)htp_table_get_c(htp_tx_request_headers(tx), "User-Agent");
+ htp_header_t *h = (htp_header_t *)htp_tx_request_header(tx, "User-Agent");
if (h == NULL || h->value == NULL) {
SCLogDebug("HTTP UA header not present in this request");
return NULL;
case LOG_HTTP_CF_REQUEST_HEADER:
/* REQUEST HEADER */
if (htp_tx_request_headers(tx) != NULL) {
- h_request_hdr = htp_table_get_c(htp_tx_request_headers(tx), node->data);
+ h_request_hdr = htp_tx_request_header(tx, node->data);
}
if (h_request_hdr != NULL) {
datalen = node->maxlen;
case LOG_HTTP_CF_REQUEST_COOKIE:
/* REQUEST COOKIE */
if (htp_tx_request_headers(tx) != NULL) {
- h_request_hdr = htp_table_get_c(htp_tx_request_headers(tx), "Cookie");
+ h_request_hdr = htp_tx_request_header(tx, "Cookie");
if (h_request_hdr != NULL) {
cvalue_len = GetCookieValue((uint8_t *)bstr_ptr(h_request_hdr->value),
(uint32_t)bstr_len(h_request_hdr->value), (char *)node->data, &cvalue);
case LOG_HTTP_CF_RESPONSE_HEADER:
/* RESPONSE HEADER */
if (htp_tx_response_headers(tx) != NULL) {
- h_response_hdr = htp_table_get_c(htp_tx_response_headers(tx), node->data);
+ h_response_hdr = htp_tx_response_header(tx, node->data);
}
if (h_response_hdr != NULL) {
datalen = node->maxlen;
/* referer */
htp_header_t *h_referer = NULL;
if (htp_tx_request_headers(tx) != NULL) {
- h_referer = htp_table_get_c(htp_tx_request_headers(tx), "referer");
+ h_referer = htp_tx_request_header(tx, "referer");
}
if (h_referer != NULL) {
PrintRawUriBuf((char *)aft->buffer->buffer, &aft->buffer->offset, aft->buffer->size,
/* Redirect? */
if ((htp_tx_response_status_number(tx) > 300) &&
((htp_tx_response_status_number(tx)) < 303)) {
- htp_header_t *h_location = htp_table_get_c(htp_tx_response_headers(tx), "location");
+ htp_header_t *h_location = htp_tx_response_header(tx, "location");
if (h_location != NULL) {
MemBufferWriteString(aft->buffer, " => ");
/* user agent */
htp_header_t *h_user_agent = NULL;
if (htp_tx_request_headers(tx) != NULL) {
- h_user_agent = htp_table_get_c(htp_tx_request_headers(tx), "user-agent");
+ h_user_agent = htp_tx_request_header(tx, "user-agent");
}
if (h_user_agent != NULL) {
PrintRawUriBuf((char *)aft->buffer->buffer, &aft->buffer->offset, aft->buffer->size,
if (htp_tx_request_headers(tx) != NULL) {
/* user agent */
- htp_header_t *h_user_agent = htp_table_get_c(htp_tx_request_headers(tx), "user-agent");
+ htp_header_t *h_user_agent = htp_tx_request_header(tx, "user-agent");
if (h_user_agent != NULL) {
jb_set_string_from_bytes(js, "http_user_agent", bstr_ptr(h_user_agent->value),
(uint32_t)bstr_len(h_user_agent->value));
}
/* x-forwarded-for */
- htp_header_t *h_x_forwarded_for =
- htp_table_get_c(htp_tx_request_headers(tx), "x-forwarded-for");
+ htp_header_t *h_x_forwarded_for = htp_tx_request_header(tx, "x-forwarded-for");
if (h_x_forwarded_for != NULL) {
jb_set_string_from_bytes(js, "xff", bstr_ptr(h_x_forwarded_for->value),
(uint32_t)bstr_len(h_x_forwarded_for->value));
/* content-type */
if (htp_tx_response_headers(tx) != NULL) {
- htp_header_t *h_content_type = htp_table_get_c(htp_tx_response_headers(tx), "content-type");
+ htp_header_t *h_content_type = htp_tx_response_header(tx, "content-type");
if (h_content_type != NULL) {
const size_t size = bstr_len(h_content_type->value) * 2 + 1;
char string[size];
*p = '\0';
jb_set_string(js, "http_content_type", string);
}
- htp_header_t *h_content_range =
- htp_table_get_c(htp_tx_response_headers(tx), "content-range");
+ htp_header_t *h_content_range = htp_tx_response_header(tx, "content-range");
if (h_content_range != NULL) {
jb_open_object(js, "content_range");
jb_set_string_from_bytes(js, "raw", bstr_ptr(h_content_range->value),
/* referer */
htp_header_t *h_referer = NULL;
if (htp_tx_request_headers(tx) != NULL) {
- h_referer = htp_table_get_c(htp_tx_request_headers(tx), "referer");
+ h_referer = htp_tx_request_header(tx, "referer");
}
if (h_referer != NULL) {
jb_set_string_from_bytes(
(uint32_t)bstr_len(htp_tx_response_status(tx)));
}
- htp_header_t *h_location = htp_table_get_c(htp_tx_response_headers(tx), "location");
+ htp_header_t *h_location = htp_tx_response_header(tx, "location");
if (h_location != NULL) {
jb_set_string_from_bytes(
js, "redirect", bstr_ptr(h_location->value), (uint32_t)bstr_len(h_location->value));