diff --git a/site_ansto/ansto_sctdriveadapter.c b/site_ansto/ansto_sctdriveadapter.c index b43d6000..6393af38 100644 --- a/site_ansto/ansto_sctdriveadapter.c +++ b/site_ansto/ansto_sctdriveadapter.c @@ -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"); diff --git a/site_ansto/ansto_tclmotdriv.c b/site_ansto/ansto_tclmotdriv.c index 57b447df..c485fc76 100644 --- a/site_ansto/ansto_tclmotdriv.c +++ b/site_ansto/ansto_tclmotdriv.c @@ -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; } } diff --git a/site_ansto/hardsup/chopper.c b/site_ansto/hardsup/chopper.c index e7e41d60..1958708f 100644 --- a/site_ansto/hardsup/chopper.c +++ b/site_ansto/hardsup/chopper.c @@ -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; diff --git a/site_ansto/hardsup/sinqhttpprot.c b/site_ansto/hardsup/sinqhttpprot.c index 8490ff0c..87e887aa 100644 --- a/site_ansto/hardsup/sinqhttpprot.c +++ b/site_ansto/hardsup/sinqhttpprot.c @@ -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){ diff --git a/site_ansto/lakeshore340driv.c b/site_ansto/lakeshore340driv.c index 77883580..f462c03c 100644 --- a/site_ansto/lakeshore340driv.c +++ b/site_ansto/lakeshore340driv.c @@ -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; diff --git a/site_ansto/west4100driv.c b/site_ansto/west4100driv.c index 00e2c026..a4830ef1 100644 --- a/site_ansto/west4100driv.c +++ b/site_ansto/west4100driv.c @@ -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;