Wireshark  4.3.0
The Wireshark network protocol analyzer
req_resp_hdrs.h
Go to the documentation of this file.
1 
12 #ifndef __REQ_RESP_HDRS_H__
13 #define __REQ_RESP_HDRS_H__
14 
15 #include "ws_symbol_export.h"
16 #include "wsutil/strtoi.h"
17 
42 WS_DLL_PUBLIC gboolean
43 req_resp_hdrs_do_reassembly(tvbuff_t *tvb, const int offset, packet_info *pinfo,
44  const gboolean desegment_headers, const gboolean desegment_body,
45  gboolean desegment_until_fin, int *last_chunk_offset,
46  dissector_table_t streaming_subdissector_table, dissector_handle_t *streaming_chunk_handle);
47 
49 static inline gboolean
50 starts_with_chunk_size(tvbuff_t* tvb, const int offset, packet_info* pinfo)
51 {
52  guint chunk_size = 0;
53  gint linelen = tvb_find_line_end(tvb, offset, tvb_reported_length_remaining(tvb, offset), NULL, TRUE);
54 
55  if (linelen < 0)
56  return FALSE;
57 
58  gchar* chunk_string = tvb_get_string_enc(pinfo->pool, tvb, offset, linelen, ENC_ASCII);
59  gchar* c = chunk_string;
60 
61  /* ignore extensions, including optional BWS ("bad whitespace")
62  * in the grammar for historical reasons, see RFC 9112 7.1.1.
63  */
64  if ((c = strpbrk(c, "; \t"))) {
65  *c = '\0';
66  }
67 
68  if (!ws_hexstrtou32(chunk_string, NULL, &chunk_size)) {
69  return FALSE; /* can not get chunk size*/
70  } else if (chunk_size > (1U << 31)) {
71  return FALSE; /* chunk size is unreasonable */
72  }
73  return TRUE;
74 }
75 
76 #endif
guint8 * tvb_get_string_enc(wmem_allocator_t *scope, tvbuff_t *tvb, const gint offset, const gint length, const guint encoding)
Definition: tvbuff.c:3229
gint tvb_find_line_end(tvbuff_t *tvb, const gint offset, int len, gint *next_offset, const gboolean desegment)
Definition: tvbuff.c:4128
gint tvb_reported_length_remaining(const tvbuff_t *tvb, const gint offset)
Definition: tvbuff.c:752
WS_DLL_PUBLIC gboolean req_resp_hdrs_do_reassembly(tvbuff_t *tvb, const int offset, packet_info *pinfo, const gboolean desegment_headers, const gboolean desegment_body, gboolean desegment_until_fin, int *last_chunk_offset, dissector_table_t streaming_subdissector_table, dissector_handle_t *streaming_chunk_handle)
Definition: req_resp_hdrs.c:28
Definition: packet_info.h:44
wmem_allocator_t * pool
Definition: packet_info.h:156
Definition: packet.c:763
Definition: packet.c:86
Definition: tvbuff-int.h:35