ftp: do not set alproto if one was already found

Ticket: 4857

If a pattern such as GET is seen ine the beginning of the
file transferred over ftp-data, this flow will get recognized
as HTTP, and a HTTP state will be created during parsing.

Thus, we cannot override directly alproto's values

This solves the segfault, but not the logical bug that the flow
should be classified as FTP-DATA instead of HTTP
pull/6705/head
Philippe Antoine 4 years ago committed by Victor Julien
parent a02f263e56
commit dd32238667

@ -324,8 +324,12 @@ AppProto AppLayerExpectationHandle(Flow *f, uint8_t flags)
if ((exp->direction & flags) && ((exp->sp == 0) || (exp->sp == f->sp)) &&
((exp->dp == 0) || (exp->dp == f->dp))) {
alproto = exp->alproto;
f->alproto_ts = alproto;
f->alproto_tc = alproto;
if (f->alproto_ts == ALPROTO_UNKNOWN) {
f->alproto_ts = alproto;
}
if (f->alproto_tc == ALPROTO_UNKNOWN) {
f->alproto_tc = alproto;
}
void *fdata = FlowGetStorageById(f, g_flow_expectation_id);
if (fdata) {
/* We already have an expectation so let's clean this one */

Loading…
Cancel
Save