OSDN Git Service

Revert "prevent crash when executing guest-file-read with large count"
authorPhilippe Mathieu-Daudé <philmd@redhat.com>
Tue, 14 Apr 2020 13:30:41 +0000 (15:30 +0200)
committerMichael Roth <mdroth@linux.vnet.ibm.com>
Wed, 15 Apr 2020 14:15:53 +0000 (09:15 -0500)
commitf62ebb63848107336e57adc12369aefaa639e38c
treee4186bed16c9af831dc51b4a44b14318b333bae3
parent73995d15557a3cf2328cc6b7982264897c65cf65
Revert "prevent crash when executing guest-file-read with large count"

As noted by Daniel Berrangé in [*], the fix from commit 807e2b6fce
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 807e2b6fce022707418bc8f61c069d91c613b3d2.

[*] 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>
qga/commands-win32.c