================
@@ -182,19 +198,31 @@ OffloadBinary::create(MemoryBufferRef Buf) {
const char *Start = Buf.getBufferStart();
const Header *TheHeader = reinterpret_cast<const Header *>(Start);
- if (TheHeader->Version != OffloadBinary::Version)
+ if (TheHeader->Version == 0 || TheHeader->Version > OffloadBinary::Version)
return errorCodeToError(object_error::parse_failed);
if (TheHeader->Size > Buf.getBufferSize() ||
TheHeader->Size < sizeof(Entry) || TheHeader->Size < sizeof(Header))
return errorCodeToError(object_error::unexpected_eof);
- if (TheHeader->EntryOffset > TheHeader->Size - sizeof(Entry) ||
- TheHeader->EntrySize > TheHeader->Size - sizeof(Header))
+ uint64_t EntriesSize = sizeof(Entry) * TheHeader->EntriesCount;
+ if (TheHeader->EntriesOffset > TheHeader->Size - EntriesSize ||
+ EntriesSize > TheHeader->Size - sizeof(Header))
return errorCodeToError(object_error::unexpected_eof);
+ return TheHeader;
+}
+
+Expected<std::unique_ptr<OffloadBinary>>
+OffloadBinary::createV1(MemoryBufferRef Buf) {
----------------
jhuber6 wrote:
At least in my head we don't need a v1 / v2 and should really not modify the
interface if possible as there are users of it in the AMD fork.
https://github.com/llvm/llvm-project/pull/169425
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits