MCPcopy Create free account
hub / github.com/OISF/libhtp / process_stream_data

Function process_stream_data

extras/htptest.c:219–315  ·  view source on GitHub ↗

* Process a chunk of the connection stream. * * @param[in] sd * @param[in] direction * @param[in] hlf */

Source from the content-addressed store, hash-verified

217 * @param[in] hlf
218 */
219void process_stream_data(stream_data *sd, int direction, struct half_stream *hlf) {
220 chunk_t *chunk = NULL;
221 int rc;
222
223 //printf("#DATA direction %d bytes %d\n", sd->direction, hlf->count_new);
224
225 if (sd->direction == direction) {
226 // Inbound data
227
228 switch(sd->connp->in_status) {
229 case HTP_STREAM_NEW :
230 case HTP_STREAM_DATA :
231 // Send data to parser
232
233 rc = htp_connp_req_data(sd->connp, 0, hlf->data, hlf->count_new);
234 if (rc == HTP_STREAM_DATA_OTHER) {
235 // Encountered inbound parsing block
236
237 // Store partial chunk for later
238 chunk = calloc(1, sizeof(chunk_t));
239 // TODO
240 chunk->len = hlf->count_new - htp_connp_req_data_consumed(sd->connp);
241 chunk->data = malloc(chunk->len);
242 // TODO
243 memcpy(chunk->data, hlf->data + htp_connp_req_data_consumed(sd->connp), chunk->len);
244 htp_list_add(sd->inbound_chunks, chunk);
245 } else
246 if (rc != HTP_STREAM_DATA) {
247 // Inbound parsing error
248 sd->log_level = 0;
249 fprintf(stderr, "[#%d] Inbound parsing error: %d\n", sd->id, rc);
250 // TODO Write connection to disk
251 }
252 break;
253
254 case HTP_STREAM_ERROR :
255 // Do nothing
256 break;
257
258 case HTP_STREAM_DATA_OTHER :
259 // Store data for later
260 chunk = calloc(1, sizeof(chunk_t));
261 // TODO
262 chunk->len = hlf->count_new;
263 chunk->data = malloc(chunk->len);
264 // TODO
265 memcpy(chunk->data, hlf->data, chunk->len);
266 htp_list_add(sd->inbound_chunks, chunk);
267 break;
268 }
269 } else {
270 // Outbound data
271 switch(sd->connp->out_status) {
272 case HTP_STREAM_NEW :
273 case HTP_STREAM_DATA :
274 // Send data to parser
275
276 rc = htp_connp_res_data(sd->connp, 0, hlf->data, hlf->count_new);

Callers 1

tcp_callbackFunction · 0.85

Calls 5

htp_connp_req_dataFunction · 0.85
htp_connp_res_dataFunction · 0.85

Tested by

no test coverage detected