diff --git a/src/dbtools/dbLoadTemplate.y b/src/dbtools/dbLoadTemplate.y index faee9d20c..0a919dda6 100644 --- a/src/dbtools/dbLoadTemplate.y +++ b/src/dbtools/dbLoadTemplate.y @@ -277,6 +277,15 @@ int epicsShareAPI dbLoadTemplate(char* sub_file) vars = (char**)malloc(VAR_MAX_VARS * sizeof(char*)); sub_collect = malloc(VAR_MAX_VAR_STRING); + if (!vars || !sub_collect) + { + free(vars); + free(sub_collect); + fclose(fp); + fprintf(stderr, "dbLoadTemplate: Out of memory!\n"); + return -1; + } + sub_collect[0]='\0'; var_count=0; sub_count=0; diff --git a/src/libCom/dbmf/dbmf.c b/src/libCom/dbmf/dbmf.c index 826b8c639..4b47d8c02 100644 --- a/src/libCom/dbmf/dbmf.c +++ b/src/libCom/dbmf/dbmf.c @@ -3,8 +3,7 @@ * National Laboratory. * Copyright (c) 2002 The Regents of the University of California, as * Operator of Los Alamos National Laboratory. -* EPICS BASE Versions 3.13.7 -* and higher are distributed subject to a Software License Agreement found +* EPICS BASE is distributed subject to a Software License Agreement found * in file LICENSE that is included with this distribution. \*************************************************************************/ /* @@ -121,7 +120,13 @@ void* epicsShareAPI dbmfMalloc(size_t size) pitemHeader = (itemHeader *)pnextFree; pitemHeader->pchunkNode->nNotFree += 1; } else { - pmem = malloc(sizeof(itemHeader) + size); pdbmfPvt->nAlloc++; + pmem = malloc(sizeof(itemHeader) + size); + if(!pmem) { + epicsMutexUnlock(pdbmfPvt->lock); + printf("dbmfMalloc malloc failed\n"); + return(NULL); + } + pdbmfPvt->nAlloc++; pdbmfPvt->nGtSize++; pitemHeader = (itemHeader *)pmem; pitemHeader->pchunkNode = NULL;