mirror of https://github.com/OISF/suricata
nfs: keep partial FILE_SYNC write tx open until its data is done
A NFSv3 WRITE with stable set to FILE_SYNC is assumed to be the last chunk of its file, and its file transaction was closed as soon as the record was seen. If the record was only partially received, the continuation could no longer find the transaction by its file handle. Its file data was then not consumed but parsed as a new RPC record, which failed and disabled the parser for the flow, and the file was truncated. Like the READ reply path already does, only close the transaction right away if the record holds all of its file data. Otherwise filetracker_update closes it once the file tracker is done or, as a truncated tracker is never done, once the data of the last chunk is complete. The latter also applies to a partial READ reply with eof set. The NFSv4 WRITE path makes the same FILE_SYNC assumption, but it only handles complete records, so it is not affected. This is also the root cause of Redmine #8009. Ticket: #9196pull/16514/head
parent
1dcb549109
commit
15f9403d9e
Loading…
Reference in New Issue