diff options
author | Luiz Capitulino <lcapitulino@redhat.com> | 2013-03-22 16:31:07 -0400 |
---|---|---|
committer | Michael Roth <mdroth@linux.vnet.ibm.com> | 2013-04-02 09:06:11 -0500 |
commit | ce7f7cc2715145eadf1ac45a5dae63f535fc8bbf (patch) | |
tree | 5fb95f428d42d81f6b309b9a23f18d4858bc4034 /qga/main.c | |
parent | 9481ecd737b91d507baf347287c62efe6760784f (diff) |
qemu-ga: ga_get_fd_handle(): abort if fd_counter overflows
Today we reset fd_counter if it wraps, but it's better to abort()
instead, as fd_counter should never reach INT64_MAX.
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
*fixed typo: s/resonable/reasonable/
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Diffstat (limited to 'qga/main.c')
-rw-r--r-- | qga/main.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/qga/main.c b/qga/main.c index 74ef7885b2..1841759db2 100644 --- a/qga/main.c +++ b/qga/main.c @@ -889,9 +889,13 @@ int64_t ga_get_fd_handle(GAState *s, Error **errp) g_assert(!ga_is_frozen(s)); handle = s->pstate.fd_counter++; - if (s->pstate.fd_counter < 0) { - s->pstate.fd_counter = 0; + + /* This should never happen on a reasonable timeframe, as guest-file-open + * would have to be issued 2^63 times */ + if (s->pstate.fd_counter == INT64_MAX) { + abort(); } + if (!write_persistent_state(&s->pstate, s->pstate_filepath)) { error_setg(errp, "failed to commit persistent state to disk"); } |