From 05bf567f3b7d555a32b134f2fca878c9f99936d0 Mon Sep 17 00:00:00 2001 From: JJL772 Date: Wed, 21 Jul 2021 17:26:39 -0700 Subject: [PATCH] Fix segfault in dbtpn when value parameter is nullptr Running 'dbtpn Record' in iocsh would result in a segfault. --- modules/database/src/ioc/db/dbNotify.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/database/src/ioc/db/dbNotify.c b/modules/database/src/ioc/db/dbNotify.c index e596285c2..7613f3672 100644 --- a/modules/database/src/ioc/db/dbNotify.c +++ b/modules/database/src/ioc/db/dbNotify.c @@ -613,8 +613,10 @@ long dbtpn(char *pname, char *pvalue) ptpnInfo = dbCalloc(1, sizeof(tpnInfo)); ptpnInfo->ppn = ppn; ptpnInfo->callbackDone = epicsEventCreate(epicsEventEmpty); - strncpy(ptpnInfo->buffer, pvalue, 80); - ptpnInfo->buffer[79] = 0; + if (pvalue) { + strncpy(ptpnInfo->buffer, pvalue, sizeof(ptpnInfo->buffer)); + ptpnInfo->buffer[sizeof(ptpnInfo->buffer)-1] = 0; + } ppn->usrPvt = ptpnInfo; epicsThreadCreate("dbtpn", epicsThreadPriorityHigh,