From: Victor Julien Date: Tue, 21 Dec 2021 08:59:15 +0000 (+0100) Subject: app-layer: move app_progress forward on errors as well X-Git-Tag: suricata-7.0.0-beta1~1046 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a27ee49c73a23a8477270207faa7b2861f7f3207;p=thirdparty%2Fsuricata.git app-layer: move app_progress forward on errors as well In case of APP_LAYER_ERROR still move the app_progress forward. This helps validation of frame offsets and should be harmless otherwise. --- diff --git a/src/app-layer.c b/src/app-layer.c index dbe390e2df..073a693fb2 100644 --- a/src/app-layer.c +++ b/src/app-layer.c @@ -460,10 +460,11 @@ static int TCPProtoDetect(ThreadVars *tv, int r = AppLayerParserParse(tv, app_tctx->alp_tctx, f, f->alproto, flags, data, data_len); PACKET_PROFILING_APP_END(app_tctx, f->alproto); + if (r != 1) { + StreamTcpUpdateAppLayerProgress(ssn, direction, data_len); + } if (r < 0) { SCReturnInt(-1); - } else if (r == 0) { - StreamTcpUpdateAppLayerProgress(ssn, direction, data_len); } } else { /* if the ssn is midstream, we may end up with a case where the @@ -533,7 +534,7 @@ static int TCPProtoDetect(ThreadVars *tv, f->alproto, flags, data, data_len); PACKET_PROFILING_APP_END(app_tctx, f->alproto); - if (r == 0) { + if (r != 1) { StreamTcpUpdateAppLayerProgress(ssn, direction, data_len); } @@ -710,7 +711,7 @@ int AppLayerHandleTCPData(ThreadVars *tv, TcpReassemblyThreadCtx *ra_ctx, r = AppLayerParserParse(tv, app_tctx->alp_tctx, f, f->alproto, flags, data, data_len); PACKET_PROFILING_APP_END(app_tctx, f->alproto); - if (r == 0) { + if (r != 1) { StreamTcpUpdateAppLayerProgress(ssn, direction, data_len); } }