=== modified file 'src/db/recGbl.c' --- src/db/recGbl.c 2015-06-23 20:51:00 +0000 +++ src/db/recGbl.c 2016-03-29 17:04:08 +0000 @@ -167,7 +167,8 @@ if(!plink->value.constantStr) return(FALSE); switch(dbftype) { case DBF_STRING: - strcpy((char *)pdest,plink->value.constantStr); + strncpy((char *)pdest, plink->value.constantStr, MAX_STRING_SIZE - 1); + ((char *)pdest)[MAX_STRING_SIZE - 1] = 0; break; case DBF_CHAR : { epicsInt16 value; === modified file 'src/dbStatic/dbStaticLib.c' --- src/dbStatic/dbStaticLib.c 2015-10-13 17:03:32 +0000 +++ src/dbStatic/dbStaticLib.c 2016-03-29 08:36:39 +0000 @@ -2198,7 +2198,10 @@ switch (pflddes->field_type) { case DBF_STRING: if(!pfield) return(S_dbLib_fieldNotFound); - strncpy((char *)pfield, pstring,pflddes->size); + if(strlen(pstring) >= (size_t)pflddes->size) return S_dbLib_strLen; + strncpy((char *)pfield, pstring, pflddes->size-1); + ((char *)pfield)[pflddes->size-1] = 0; + if((pflddes->special == SPC_CALC) && !stringHasMacro) { char rpcl[RPCL_LEN]; short err; @@ -2209,7 +2212,6 @@ calcErrorStr(err), pstring); } } - if((short)strlen(pstring) >= pflddes->size) status = S_dbLib_strLen; break; case DBF_CHAR: