From 7b77faa53eb4b164b61b7b816e99174e7e6c94e1 Mon Sep 17 00:00:00 2001 From: Allanis Date: Wed, 11 Sep 2013 23:40:59 +0100 Subject: [PATCH] [Fix] Fixed double free if an invalid faction was loaded. --- src/faction.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/faction.c b/src/faction.c index 165259d..a9de2e7 100644 --- a/src/faction.c +++ b/src/faction.c @@ -461,6 +461,7 @@ int pfaction_save(xmlTextWriterPtr writer) { int pfaction_load(xmlNodePtr parent) { xmlNodePtr node, cur; char* str; + int faction; node = parent->xmlChildrenNode; @@ -470,7 +471,9 @@ int pfaction_load(xmlNodePtr parent) { do { if(xml_isNode(cur, "factions")) { xmlr_attr(cur, "name", str); - faction_stack[faction_get(str)].player = xml_getInt(cur); + faction = faction_get(str); + if(faction != -1) /* Faction is valid. */ + faction_stack[faction].player = xml_getInt(cur); free(str); } } while(xml_nextNode(cur));