Revert "prevent crash when executing guest-file-read with large count"
As noted by Daniel Berrangé in [*], the fix from commit807e2b6fce
which replaced malloc() by try_malloc() is not enough, the process can still run out of memory a few line later: 346 buf = g_try_malloc0(count + 1); 347 if (!buf) { 348 error_setg(errp, 349 "failed to allocate sufficient memory " 350 "to complete the requested service"); 351 return NULL; 352 } 353 is_ok = ReadFile(fh, buf, count, &read_count, NULL); 354 if (!is_ok) { 355 error_setg_win32(errp, GetLastError(), "failed to read file"); 356 slog("guest-file-read failed, handle %" PRId64, handle); 357 } else { 358 buf[read_count] = 0; 359 read_data = g_new0(GuestFileRead, 1); ^^^^^^ Instead we are going to put a low hard limit on 'count' in the next commits. This reverts commit807e2b6fce
. [*] https://lists.gnu.org/archive/html/qemu-devel/2018-06/msg03471.html Suggested-by: Daniel P. Berrangé <berrange@redhat.com> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
This commit is contained in:
parent
73995d1555
commit
f62ebb6384
@ -343,13 +343,7 @@ GuestFileRead *qmp_guest_file_read(int64_t handle, bool has_count,
|
||||
}
|
||||
|
||||
fh = gfh->fh;
|
||||
buf = g_try_malloc0(count + 1);
|
||||
if (!buf) {
|
||||
error_setg(errp,
|
||||
"failed to allocate sufficient memory "
|
||||
"to complete the requested service");
|
||||
return NULL;
|
||||
}
|
||||
buf = g_malloc0(count + 1);
|
||||
is_ok = ReadFile(fh, buf, count, &read_count, NULL);
|
||||
if (!is_ok) {
|
||||
error_setg_win32(errp, GetLastError(), "failed to read file");
|
||||
|
Loading…
Reference in New Issue
Block a user