[llvm] Add llvm-extract-bundle-entry to extend llvm-objcopy (PR #169386)
James Henderson via llvm-commits
llvm-commits at lists.llvm.org
Thu Feb 12 00:50:11 PST 2026
================
@@ -219,24 +219,38 @@ Error object::extractOffloadBundleFatBinary(
return Error::success();
}
-Error object::extractCodeObject(const ObjectFile &Source, int64_t Offset,
- int64_t Size, StringRef OutputFileName) {
+Error object::extractCodeObject(const ObjectFile &Source, size_t Offset,
+ size_t Size, StringRef OutputFileName) {
Expected<std::unique_ptr<FileOutputBuffer>> BufferOrErr =
FileOutputBuffer::create(OutputFileName, Size);
- if (!BufferOrErr)
- return BufferOrErr.takeError();
+ if (Error Err = BufferOrErr.takeError())
+ return Err;
Expected<MemoryBufferRef> InputBuffOrErr = Source.getMemoryBufferRef();
if (Error Err = InputBuffOrErr.takeError())
- return Err;
+ return createFileError(OutputFileName, std::move(Err));
+
+ if (Size > InputBuffOrErr->getBufferSize())
+ return createStringError("size in URI(%llu) is larger than source (%llu)",
+ Size, InputBuffOrErr->getBufferSize());
+
+ if (Offset > InputBuffOrErr->getBufferSize())
+ return createStringError(
+ "offset in URI (%llu) is beyond the size of the source (%llu)", Offset,
+ InputBuffOrErr->getBufferSize());
+
+ if (Offset + Size > InputBuffOrErr->getBufferSize())
----------------
jh7370 wrote:
Up to you whether you care about it, but is it worth considering overflow too? I believe we do in similar cases in ELF processing, for example.
https://github.com/llvm/llvm-project/pull/169386
More information about the llvm-commits
mailing list