Bugfix for collecting features from very small DSOs.

During unit tests, it was observed that crafting an artificially small DSO could cause OOB memory to be accessed. This change fixes that (but again, the affected DSOs are unlikely to ever occur outside unit tests).

Reviewed By: morehouse, charco

Differential Revision: https://reviews.llvm.org/D94507

GitOrigin-RevId: 10993bf072d93cc0868b5594f8e22fb876139b41
diff --git a/FuzzerTracePC.h b/FuzzerTracePC.h
index 0090923..63b2320 100644
--- a/FuzzerTracePC.h
+++ b/FuzzerTracePC.h
@@ -193,7 +193,7 @@
       Handle8bitCounter(FirstFeature, P - Begin, V);
 
   // Iterate by Step bytes at a time.
-  for (; P < End; P += Step)
+  for (; P + Step <= End; P += Step)
     if (LargeType Bundle = *reinterpret_cast<const LargeType *>(P)) {
       Bundle = HostToLE(Bundle);
       for (size_t I = 0; I < Step; I++, Bundle >>= 8)