Skip to content

Commit f62ebb6

Browse files
philmdmdroth
authored andcommitted
Revert "prevent crash when executing guest-file-read with large count"
As noted by Daniel Berrangé in [*], the fix from commit 807e2b6 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 commit 807e2b6. [*] https://lists.gnu.org/archive/html/qemu-devel/2018-06/msg03471.html Suggested-by: Daniel P. Berrangé <[email protected]> Signed-off-by: Philippe Mathieu-Daudé <[email protected]> Signed-off-by: Michael Roth <[email protected]>
1 parent 73995d1 commit f62ebb6

File tree

1 file changed

+1
-7
lines changed

1 file changed

+1
-7
lines changed

qga/commands-win32.c

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -343,13 +343,7 @@ GuestFileRead *qmp_guest_file_read(int64_t handle, bool has_count,
343343
}
344344

345345
fh = gfh->fh;
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-
}
346+
buf = g_malloc0(count + 1);
353347
is_ok = ReadFile(fh, buf, count, &read_count, NULL);
354348
if (!is_ok) {
355349
error_setg_win32(errp, GetLastError(), "failed to read file");

0 commit comments

Comments
 (0)