Merged changes from 3.14 branch to revno 12687
This commit is contained in:
@@ -130,8 +130,8 @@ long dbcar(char *precordname, int level)
|
||||
precord->name,
|
||||
pdbFldDes->name,
|
||||
plink->value.pv_link.pvname,
|
||||
pca->nDisconnect,
|
||||
pca->nNoWrite);
|
||||
pca ? pca->nDisconnect : 0,
|
||||
pca ? pca->nNoWrite : 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3940,10 +3940,9 @@ static long putFloatString(
|
||||
char *pdest = (char *) paddr->pfield;
|
||||
long status = 0;
|
||||
int precision = 6;
|
||||
struct rset *prset = 0;
|
||||
struct rset *prset = dbGetRset(paddr);
|
||||
short size = paddr->field_size;
|
||||
|
||||
if (paddr) prset = dbGetRset(paddr);
|
||||
if (prset && (prset->get_precision))
|
||||
status = (*prset->get_precision)(paddr,&precision);
|
||||
if (nRequest==1 && offset==0) {
|
||||
@@ -4154,10 +4153,9 @@ static long putDoubleString(
|
||||
char *pdest = (char *) paddr->pfield;
|
||||
long status = 0;
|
||||
int precision = 6;
|
||||
struct rset *prset = 0;
|
||||
struct rset *prset = dbGetRset(paddr);
|
||||
short size = paddr->field_size;
|
||||
|
||||
if (paddr) prset = dbGetRset(paddr);
|
||||
if (prset && (prset->get_precision))
|
||||
status = (*prset->get_precision)(paddr,&precision);
|
||||
if (nRequest==1 && offset==0) {
|
||||
|
||||
@@ -172,6 +172,7 @@ int pft(const char *pname, const char *pvalue)
|
||||
ca_dump_dbr(DBR_ENUM,1, buffer);
|
||||
}
|
||||
printf("\n");
|
||||
dbChannelDelete(chan);
|
||||
return (0);
|
||||
}
|
||||
|
||||
@@ -231,6 +232,7 @@ int tpn(const char *pname, const char *pvalue)
|
||||
ppn = calloc(1, sizeof(processNotify));
|
||||
if (!ppn) {
|
||||
printf("calloc failed\n");
|
||||
dbChannelDelete(chan);
|
||||
return -1;
|
||||
}
|
||||
ppn->requestType = putProcessRequest;
|
||||
@@ -241,6 +243,7 @@ int tpn(const char *pname, const char *pvalue)
|
||||
ptpnInfo = calloc(1, sizeof(tpnInfo));
|
||||
if (!ptpnInfo) {
|
||||
printf("calloc failed\n");
|
||||
dbChannelDelete(chan);
|
||||
return -1;
|
||||
}
|
||||
ptpnInfo->ppn = ppn;
|
||||
|
||||
+11
-10
@@ -663,7 +663,7 @@ static void read_reply ( void *pArg, struct dbChannel *dbch,
|
||||
static int read_action ( caHdrLargeArray *mp, void *pPayloadIn, struct client *pClient )
|
||||
{
|
||||
struct channel_in_use *pciu = MPTOPCIU ( mp );
|
||||
const int readAccess = asCheckGet ( pciu->asClientPVT );
|
||||
int readAccess;
|
||||
ca_uint32_t payloadSize;
|
||||
void *pPayload;
|
||||
int status;
|
||||
@@ -675,6 +675,7 @@ static int read_action ( caHdrLargeArray *mp, void *pPayloadIn, struct client *p
|
||||
logBadId ( pClient, mp, 0 );
|
||||
return RSRV_ERROR;
|
||||
}
|
||||
readAccess = asCheckGet ( pciu->asClientPVT );
|
||||
|
||||
SEND_LOCK ( pClient );
|
||||
|
||||
@@ -748,7 +749,7 @@ static int read_action ( caHdrLargeArray *mp, void *pPayloadIn, struct client *p
|
||||
*/
|
||||
if ( mp->m_dataType == DBR_STRING && mp->m_count == 1 ) {
|
||||
char * pStr = (char *) pPayload;
|
||||
size_t strcnt = strlen ( pStr );
|
||||
size_t strcnt = epicsStrnLen( pStr, payloadSize );
|
||||
if ( strcnt < payloadSize ) {
|
||||
payloadSize = ( ca_uint32_t ) ( strcnt + 1u );
|
||||
}
|
||||
@@ -883,7 +884,7 @@ static int write_action ( caHdrLargeArray *mp,
|
||||
static int host_name_action ( caHdrLargeArray *mp, void *pPayload,
|
||||
struct client *client )
|
||||
{
|
||||
size_t size;
|
||||
ca_uint32_t size;
|
||||
char *pName;
|
||||
char *pMalloc;
|
||||
int chanCount;
|
||||
@@ -907,9 +908,9 @@ static int host_name_action ( caHdrLargeArray *mp, void *pPayload,
|
||||
}
|
||||
|
||||
pName = (char *) pPayload;
|
||||
size = strlen(pName)+1;
|
||||
if (size > 512) {
|
||||
log_header ( "bad (very long) host name",
|
||||
size = epicsStrnLen(pName, mp->m_postsize)+1;
|
||||
if (size > 512 || size > mp->m_postsize) {
|
||||
log_header ( "bad (very long) host name",
|
||||
client, mp, pPayload, 0 );
|
||||
SEND_LOCK(client);
|
||||
send_err(
|
||||
@@ -962,7 +963,7 @@ static int host_name_action ( caHdrLargeArray *mp, void *pPayload,
|
||||
static int client_name_action ( caHdrLargeArray *mp, void *pPayload,
|
||||
struct client *client )
|
||||
{
|
||||
size_t size;
|
||||
ca_uint32_t size;
|
||||
char *pName;
|
||||
char *pMalloc;
|
||||
int chanCount;
|
||||
@@ -986,9 +987,9 @@ static int client_name_action ( caHdrLargeArray *mp, void *pPayload,
|
||||
}
|
||||
|
||||
pName = (char *) pPayload;
|
||||
size = strlen(pName)+1;
|
||||
if (size > 512) {
|
||||
log_header ("a very long user name was specified",
|
||||
size = epicsStrnLen(pName, mp->m_postsize)+1;
|
||||
if (size > 512 || size > mp->m_postsize) {
|
||||
log_header ("a very long user name was specified",
|
||||
client, mp, pPayload, 0);
|
||||
SEND_LOCK(client);
|
||||
send_err(
|
||||
|
||||
Reference in New Issue
Block a user