Fix some memory leaks and use-after-free (cppcheck)

This commit is contained in:
Douglas Clowes
2014-03-03 17:18:52 +11:00
parent be347e813c
commit 9e65849964
6 changed files with 34 additions and 18 deletions

View File

@ -278,6 +278,11 @@ int ANSTO_SctMakeDriveAdapter(SConnection *pCon, SicsInterp *pSics, void *object
pSICSOBJ obj = NULL;
hdbCallback *cb;
if(argc < 4){
SCWrite(pCon,"ERROR: not enough arguments for ANSTO_SctMakeDriveAdapter", eError);
return 0;
}
pNew = SCTDRIVMakeObject();
if(pNew == NULL){
SCWrite(pCon,"ERROR: out of memory in ANSTO_SctMakeDriveAdapter",
@ -285,11 +290,6 @@ int ANSTO_SctMakeDriveAdapter(SConnection *pCon, SicsInterp *pSics, void *object
return 0;
}
if(argc < 4){
SCWrite(pCon,"ERROR: not enough arguments for ANSTO_SctMakeDriveAdapter", eError);
return 0;
}
pNew->write_node = FindHdbNode(NULL,argv[2], pCon);
pNew->read_node = FindHdbNode(NULL,argv[3], pCon);
obj = FindCommandData(pSics,argv[4], "SctController");

View File

@ -415,9 +415,12 @@ static int TclSetPar(void *self, SConnection * pCon, char *name,
return OKOK;
} else {
pDriv->errorCode = PARANOTFOUND;
free(tclCommand);
free(tclCommandPara);;
return 0;
}
free(tclCommand);
return OKOK;
}
}

View File

@ -909,8 +909,12 @@ pCodri MakeTcpDoChoDriver(char *tclArray, SConnection *pCon){
allocate memory
*/
pNew = (pCodri)malloc(sizeof(Codri));
if(!pNew){
return NULL;
}
self = (pTcpDoCho)malloc(sizeof(TcpDoCho));
if(!pNew || !self){
if(!self){
free(pNew);
return NULL;
}
memset(pNew,0,sizeof(Codri));
@ -952,6 +956,7 @@ pCodri MakeTcpDoChoDriver(char *tclArray, SConnection *pCon){
SCWrite(pCon,"ERROR: number of choppers not in range 1 - 8",eError);
free(pNew);
free(self);
return NULL;
}
self->numChoppers = port;

View File

@ -203,19 +203,21 @@ static int HttpProtInit(Ascon *a, SConnection *con,
int argc, char *argv[]){
pHttpProt pHttp = NULL;
if(argc < 3){
SCWrite(con,"ERROR: too few arguments in HttpProtInit", eError);
return 0;
}
pHttp = calloc(sizeof(HttpProt), 1);
if(pHttp == NULL){
SCWrite(con,"ERROR: out of memory in HttpProtInit", eError);
return 0;
}
if(argc < 3){
return 0;
}
a->hostport = strdup(argv[1]);
pHttp->binData = (pSICSData)FindCommandData(pServ->pSics,
argv[2], "SICSData");
if(pHttp->binData == NULL){
SCWrite(con,"ERROR: SICSData objct not found", eError);
SCWrite(con,"ERROR: SICSData object not found", eError);
free(pHttp);
return 0;
}
if(argc > 3){

View File

@ -286,12 +286,15 @@
}
pNew = CreateEVDriver(argc,argv);
pSim = (pLAKESHORE340Driv)malloc(sizeof(LAKESHORE340Driv));
memset(pSim,0,sizeof(LAKESHORE340Driv));
if(!pNew || !pSim)
{
if (!pNew) {
return NULL;
}
pSim = (pLAKESHORE340Driv)malloc(sizeof(LAKESHORE340Driv));
if (!pSim) {
free(pNew);
return NULL;
}
memset(pSim,0,sizeof(LAKESHORE340Driv));
pNew->pPrivate = pSim;
pNew->KillPrivate = KillLAKESHORE340;

View File

@ -297,13 +297,16 @@
return NULL;
}
pNew = CreateEVDriver(argc,argv);
pSim = (pWEST4100Driv)malloc(sizeof(WEST4100Driv));
memset(pSim,0,sizeof(WEST4100Driv));
if(!pNew || !pSim)
{
if(!pSim) {
return NULL;
}
pNew = CreateEVDriver(argc,argv);
if(!pNew) {
free(pSim);
return NULL;
}
memset(pSim,0,sizeof(WEST4100Driv));
pNew->pPrivate = pSim;
pNew->KillPrivate = KillWEST4100;