diff --git a/src/dbStatic/dbStaticLib.c b/src/dbStatic/dbStaticLib.c index 2ab8dac87..6214dbd21 100644 --- a/src/dbStatic/dbStaticLib.c +++ b/src/dbStatic/dbStaticLib.c @@ -165,9 +165,9 @@ static long checkDevChoice(DBENTRY *pdbentry, long link_type) status = S_dbLib_badField; goto clean_up; } - plink->type = link_type; if(plink->type==CONSTANT) free((void *)plink->value.constantStr); memset((char *)plink,0,sizeof(struct link)); + plink->type = link_type; switch(plink->type) { case VME_IO: plink->value.vmeio.parm = pNullString; break; case CAMAC_IO: plink->value.camacio.parm = pNullString; break; @@ -1470,6 +1470,7 @@ long dbPutString(DBENTRY *pdbentry,char *pstring) status = postfix(pstring,rpcl,&error_number); if(status) status = S_dbLib_badField; } + if((short)strlen(pstring) >= pflddes->size) status = S_dbLib_strLen; break; case DBF_CHAR : case DBF_SHORT : diff --git a/src/dbStatic/dbStaticLib.h b/src/dbStatic/dbStaticLib.h index 60c08a8ec..b5a93af26 100644 --- a/src/dbStatic/dbStaticLib.h +++ b/src/dbStatic/dbStaticLib.h @@ -193,4 +193,5 @@ extern int dbStaticDebug; #define S_dbLib_badLink (M_dbLib|15) /*Bad Link Field*/ #define S_dbLib_nameLength (M_dbLib|17) /*Record Name is too long*/ #define S_dbLib_noRecSup (M_dbLib|19) /*Record support not found*/ +#define S_dbLib_strLen (M_dbLib|21) /*String is too long*/ #endif /*INCdbStaticLibh*/