[Spice-devel] [PATCH] Replay: report error if we don't read the correct file header
Frediano Ziglio
fziglio at redhat.com
Thu Jan 21 08:48:24 PST 2016
>
> The replay file should start with a header such as
> SPICE_REPLAY 1
>
> Instead of soldiering on if we don't encounter this header, print a
> warning, and also assert that spice_replay_new() returned a non-NULL
> object.
> ---
> server/red-replay-qxl.c | 3 +++
> server/tests/replay.c | 1 +
> 2 files changed, 4 insertions(+)
>
> diff --git a/server/red-replay-qxl.c b/server/red-replay-qxl.c
> index 72d06c8..17ee022 100644
> --- a/server/red-replay-qxl.c
> +++ b/server/red-replay-qxl.c
> @@ -1209,6 +1209,9 @@ SpiceReplay *spice_replay_new(FILE *file, int
> nsurfaces)
> spice_warning("Replay file version unsupported");
> return NULL;
> }
> + } else {
> + spice_warning("This doesn't look like a valid replay file");
> + return NULL;
> }
>
> replay = spice_malloc0(sizeof(SpiceReplay));
> diff --git a/server/tests/replay.c b/server/tests/replay.c
> index 2af9481..2641318 100644
> --- a/server/tests/replay.c
> +++ b/server/tests/replay.c
> @@ -369,6 +369,7 @@ int main(int argc, char **argv)
> if (total_size > 0)
> g_timeout_add_seconds(1, progress_timer, fd);
> replay = spice_replay_new(fd, MAX_SURFACE_NUM);
> + spice_assert(replay != NULL);
>
> aqueue = g_async_queue_new();
> core = basic_event_loop_init();
You are in the main and passing a wrong file is not a bug in the program, I
would use a
if (replay != NULL) {
fprintf(stderr, "Error initializing replay\n");
exit(EXIT_FAILURE);
}
Frediano
More information about the Spice-devel
mailing list