From e27ac9c966ba94718b1a0390ba29c820224bc58c Mon Sep 17 00:00:00 2001
From: Markus Armbruster <armbru@redhat.com>
Date: Wed, 18 Jan 2012 10:38:35 +0100
Subject: [PATCH 41/52] ui: Plug memory leaks on parse_keyboard_layout() error
 path

RH-Author: Markus Armbruster <armbru@redhat.com>
Message-id: <1326883126-22053-42-git-send-email-armbru@redhat.com>
Patchwork-id: 36600
O-Subject: [RHEL-6.3 PATCH qemu-kvm 41/52] ui: Plug memory leaks on parse_keyboard_layout() error path
Bugzilla: 758194
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
RH-Acked-by: Amit Shah <amit.shah@redhat.com>

Spotted by Coverity.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
(cherry picked from commit f2d3476eba17486c42357ba25c36bd26e627d1d7)
---
 keymaps.c |   12 +++++++-----
 1 files changed, 7 insertions(+), 5 deletions(-)

Signed-off-by: Michal Novotny <minovotn@redhat.com>
---
 keymaps.c |   12 +++++++-----
 1 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/keymaps.c b/keymaps.c
index 3cc4445..da4ed2b 100644
--- a/keymaps.c
+++ b/keymaps.c
@@ -69,15 +69,17 @@ static kbd_layout_t *parse_keyboard_layout(const name2keysym_t *table,
     int len;
 
     filename = qemu_find_file(QEMU_FILE_TYPE_KEYMAP, language);
-
-    if (!k)
-	k = g_malloc0(sizeof(kbd_layout_t));
-    if (!(filename && (f = fopen(filename, "r")))) {
+    f = filename ? fopen(filename, "r") : NULL;
+    g_free(filename);
+    if (!f) {
 	fprintf(stderr,
 		"Could not read keymap file: '%s'\n", language);
 	return NULL;
     }
-    g_free(filename);
+
+    if (!k)
+	k = g_malloc0(sizeof(kbd_layout_t));
+
     for(;;) {
 	if (fgets(line, 1024, f) == NULL)
             break;
-- 
1.7.7.5

