Fix null pointer dereference when parsing chardevs without a backend option.
authorMike McCormack <mj.mccormack@samsung.com>
Tue, 29 Jun 2010 08:38:23 +0000 (17:38 +0900)
committerMike McCormack <mj.mccormack@samsung.com>
Wed, 13 Oct 2010 01:51:48 +0000 (10:51 +0900)
Signed-off-by: Mike McCormack <mj.mccormack@samsung.com>
qemu-char.c

index 33f2237..78111db 100644 (file)
@@ -2441,6 +2441,7 @@ CharDriverState *qemu_chr_open_opts(QemuOpts *opts,
                                     void (*init)(struct CharDriverState *s))
 {
     CharDriverState *chr;
+    const char *backend;
     int i;
 
     if (qemu_opts_id(opts) == NULL) {
@@ -2448,8 +2449,14 @@ CharDriverState *qemu_chr_open_opts(QemuOpts *opts,
         return NULL;
     }
 
+    backend = qemu_opt_get(opts, "backend");
+    if (!backend) {
+        fprintf(stderr, "chardev: backend option not specified\n");
+        return NULL;
+    }
+
     for (i = 0; i < ARRAY_SIZE(backend_table); i++) {
-        if (strcmp(backend_table[i].name, qemu_opt_get(opts, "backend")) == 0)
+        if (strcmp(backend_table[i].name, backend) == 0)
             break;
     }
     if (i == ARRAY_SIZE(backend_table)) {