|
@@ -1107,13 +1107,16 @@ ssize_t ProcFSInode::read_bytes(off_t offset, ssize_t count, u8* buffer, FileDes
|
|
|
}
|
|
|
|
|
|
auto& data = generated_data;
|
|
|
- ssize_t nread = 0;
|
|
|
- if (data.has_value()) {
|
|
|
- nread = min(static_cast<off_t>(data.value().size() - offset), static_cast<off_t>(count));
|
|
|
- memcpy(buffer, data.value().data() + offset, nread);
|
|
|
- if (nread == 0 && description && description->generator_cache())
|
|
|
- description->generator_cache().clear();
|
|
|
- }
|
|
|
+ if (!data.has_value())
|
|
|
+ return 0;
|
|
|
+
|
|
|
+ if ((size_t)offset >= data.value().size())
|
|
|
+ return 0;
|
|
|
+
|
|
|
+ ssize_t nread = min(static_cast<off_t>(data.value().size() - offset), static_cast<off_t>(count));
|
|
|
+ memcpy(buffer, data.value().data() + offset, nread);
|
|
|
+ if (nread == 0 && description && description->generator_cache())
|
|
|
+ description->generator_cache().clear();
|
|
|
|
|
|
return nread;
|
|
|
}
|