if (p->packet_flags & PKT_STREAM_EST)
{
- if (!p->flow || !p->flow->gadget)
+ if (!p->flow)
status = ERR_UNIDENTIFIED_PROTOCOL;
- else if (strcmp(p->flow->gadget->get_name(),"http_inspect") == 0)
+ else if (!p->flow->gadget || strcmp(p->flow->gadget->get_name(),"http_inspect") == 0)
{
payload_injector_stats.http_injects++;
p->active->send_data(p, df, control.http_page, control.http_page_len);
InjectionControl control;
PayloadInjectorCounts* counts = (PayloadInjectorCounts*)mod.get_counts();
Flow flow;
+ Active active;
void setup() override
{
mock_api.base.name = "http_inspect";
flow.gadget = new MockInspector();
p.flow = &flow;
+ p.active = &active;
InjectionReturnStatus status = mod.inject_http_payload(&p, control);
CHECK(counts->http_injects == 1);
CHECK(status == INJECTION_SUCCESS);
mock_api.base.name = "http2_inspect";
flow.gadget = new MockInspector();
p.flow = &flow;
+ p.active = &active;
control.stream_id = 1;
InjectionReturnStatus status = mod.inject_http_payload(&p, control);
CHECK(counts->http2_injects == 1);
Packet p(false);
p.packet_flags = PKT_STREAM_EST;
p.flow = &flow;
+ p.active = &active;
InjectionReturnStatus status = mod.inject_http_payload(&p, control);
- CHECK(status == ERR_UNIDENTIFIED_PROTOCOL);
+ CHECK(counts->http_injects == 1);
+ CHECK(status == INJECTION_SUCCESS);
CHECK(flow.flow_state == Flow::FlowState::BLOCK);
- const char* err_string = mod.get_err_string(status);
- CHECK(strcmp(err_string, "Unidentified protocol") == 0);
}
TEST(payload_injector_test, unidentified_gadget_name)