From de7dbd7b01d8e10ee503eec4c09d2508b6707fee Mon Sep 17 00:00:00 2001 From: Jim Norman Date: Fri, 26 Jan 2007 11:46:36 +0000 Subject: [PATCH] Fix buffer overrun and double free problem. --- CASA/adlib/ad_ff/native/SignonManager.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/CASA/adlib/ad_ff/native/SignonManager.cpp b/CASA/adlib/ad_ff/native/SignonManager.cpp index 2e791137..c4269392 100644 --- a/CASA/adlib/ad_ff/native/SignonManager.cpp +++ b/CASA/adlib/ad_ff/native/SignonManager.cpp @@ -411,7 +411,7 @@ int count = 0; // Add the name/value pair to the existing store.... if (count == 1) { - uname = (char *) malloc(strlen(clearData)*sizeof(char)); + uname = (char *) malloc(strlen(clearData)*sizeof(char) + 1); strcpy(uname, clearData); } @@ -427,7 +427,9 @@ int count = 0; dataManager.AddHost(newHostName); } retValue = dataManager.AddHostElement(newHostName, name, clearData, isPassword); - free(newHostName); + + if(count%2==0) + free(newHostName); } else retValue = dataManager.AddHostElement(hostName, name, clearData, isPassword);