[Spice-devel] [PATCH v3] Replay: report error if we don't read the correct file header

Jonathon Jongsma jjongsma at redhat.com
Thu Jan 21 09:25:36 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 return NULL.  Also exit with a failure if spice_replay_new()
returns a NULL object in main.
---
 server/red-replay-qxl.c | 3 +++
 server/tests/replay.c   | 4 ++++
 2 files changed, 7 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..0c98168 100644
--- a/server/tests/replay.c
+++ b/server/tests/replay.c
@@ -369,6 +369,10 @@ 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);
+    if (replay == NULL) {
+        g_printerr("Error initializing replay\n");
+        exit(1);
+    }
 
     aqueue = g_async_queue_new();
     core = basic_event_loop_init();
-- 
2.4.3



More information about the Spice-devel mailing list