aboutsummaryrefslogtreecommitdiffstats
path: root/executor/executor.cc
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2024-11-25 11:55:35 +0100
committerDmitry Vyukov <dvyukov@google.com>2024-11-26 09:08:23 +0000
commite9a9a9f23f2a13f697d9d9572d2d4a34369a0068 (patch)
treed61f04c8d2e168f681d6cdab936d6cbbf848fe93 /executor/executor.cc
parenta188cd36e162cc98a3f0cdbeb062bac2e7fa185d (diff)
executor: don't revert coverage order
Currently we write coverage backwards. This is visible e.g. when running syz-execprog -coverfile, and in the manager raw cover mode. Write it in the right order.
Diffstat (limited to 'executor/executor.cc')
-rw-r--r--executor/executor.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/executor/executor.cc b/executor/executor.cc
index 750858be2..e8e1cb000 100644
--- a/executor/executor.cc
+++ b/executor/executor.cc
@@ -1169,8 +1169,9 @@ uint32 write_cover(flatbuffers::FlatBufferBuilder& fbb, cover_t* cov)
cover_size = std::unique(cover_data, end) - cover_data;
}
fbb.StartVector(cover_size, sizeof(uint64));
+ // Flatbuffer arrays are written backwards, so reverse the order on our side as well.
for (uint32 i = 0; i < cover_size; i++)
- fbb.PushElement(uint64(cover_data[i] + cov->pc_offset));
+ fbb.PushElement(uint64(cover_data[cover_size - i - 1] + cov->pc_offset));
return fbb.EndVector(cover_size);
}