Let's return -EBADMSG if the PE headers reference stuff missing in the
file, regardless if that's because the offsets are larger than SSIZE_MAX
or just larger than the file size. We generally use EBADMSG for all
cases we deem the file to not be a conformant PE file, and these two
cases are the same. Hence, let's be systematic here.
size_t n = le32toh(section->VirtualSize);
if (n > MIN(max_size, (size_t) SSIZE_MAX))
- return -E2BIG;
+ return -EBADMSG;
_cleanup_free_ void *data = malloc(n+1);
if (!data)
if (ss < 0)
return -errno;
if ((size_t) ss != n)
- return -EIO;
+ return -EBADMSG;
if (ret_size)
*ret_size = n;