From 8ded27ec20231c2de26f51570f00fbe8cf69233e Mon Sep 17 00:00:00 2001 From: Allanis Date: Wed, 16 Apr 2014 19:12:00 +0100 Subject: [PATCH] [Fix] Fixed a possible double free due to uninitialised memory. --- src/land.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/land.c b/src/land.c index 384d5bf..a2d2d52 100644 --- a/src/land.c +++ b/src/land.c @@ -1111,17 +1111,18 @@ static void misn_genList(unsigned int wid, int first) { window_destroyWidget(wid, "lstMission"); /* List. */ + j = 1; /* Make sure we don't accidently free the memory twise. */ if(mission_ncomputer > 0) { /* there are missions. */ misn_names = malloc(sizeof(char*) * mission_ncomputer); j = 0; for(i = 0; i < mission_ncomputer; i++) - if(mission_computer[i].title) + if(mission_computer[i].title != NULL) misn_names[j++] = strdup(mission_computer[i].title); - } - if((mission_ncomputer == 0) || (j == 0)) { - /* No missions. */ - if(j == 0) free(misn_names); + } + if((mission_ncomputer==0) || (j == 0)) { /* No missions. */ + if(j == 0) + free(misn_names); misn_names = malloc(sizeof(char*)); misn_names[0] = strdup("No Missions"); }