diff --git a/src/ca/comQueSend.cpp b/src/ca/comQueSend.cpp index 0debf12a1..bbdcdd4f5 100644 --- a/src/ca/comQueSend.cpp +++ b/src/ca/comQueSend.cpp @@ -245,13 +245,13 @@ void comQueSend::copy_dbr_double ( bufferReservoir &reservoir, const void *pValu } const comQueSend::copyFunc_t comQueSend::dbrCopyVector [] = { - comQueSend::copy_dbr_string, - comQueSend::copy_dbr_short, - comQueSend::copy_dbr_float, - comQueSend::copy_dbr_short, // DBR_ENUM - comQueSend::copy_dbr_char, - comQueSend::copy_dbr_long, - comQueSend::copy_dbr_double, + &comQueSend::copy_dbr_string, + &comQueSend::copy_dbr_short, + &comQueSend::copy_dbr_float, + &comQueSend::copy_dbr_short, // DBR_ENUM + &comQueSend::copy_dbr_char, + &comQueSend::copy_dbr_long, + &comQueSend::copy_dbr_double, 0, // DBR_STS_SHORT 0, // DBR_STS_FLOAT 0, // DBR_STS_ENUM @@ -280,8 +280,8 @@ const comQueSend::copyFunc_t comQueSend::dbrCopyVector [] = { 0, // DBR_CTRL_CHAR 0, // DBR_CTRL_LONG 0, // DBR_CTRL_DOUBLE - comQueSend::copy_dbr_short, // DBR_PUT_ACKT - comQueSend::copy_dbr_short, // DBR_PUT_ACKS + &comQueSend::copy_dbr_short, // DBR_PUT_ACKT + &comQueSend::copy_dbr_short, // DBR_PUT_ACKS 0, // DBR_STSACK_STRING 0 // DBR_CLASS_NAME }; @@ -368,9 +368,13 @@ int comQueSend::writeRequest ( unsigned serverId, unsigned type, unsigned nElem, unsigned size, postcnt; bool stringOptim; + if ( type < 0 || type >= NELEMENTS ( this->dbrCopyVector ) ) { + return ECA_BADTYPE; + } if ( ! this->dbrCopyVector [type] ) { return ECA_BADTYPE; } + if ( nElem > 0xffff) { return ECA_BADCOUNT; } @@ -418,6 +422,9 @@ int comQueSend::writeNotifyRequest ( unsigned ioId, unsigned serverId, unsigned bufferReservoir reservoir; ca_uint32_t size, postcnt; + if ( type < 0 || type >= NELEMENTS ( this->dbrCopyVector ) ) { + return ECA_BADTYPE; + } if ( ! this->dbrCopyVector [type] ) { return ECA_BADTYPE; } diff --git a/src/ca/tcpiiu.cpp b/src/ca/tcpiiu.cpp index 35539f7e3..9737e2c8a 100644 --- a/src/ca/tcpiiu.cpp +++ b/src/ca/tcpiiu.cpp @@ -28,34 +28,34 @@ const caHdr cacnullmsg = { // TCP protocol jump table const tcpiiu::pProtoStubTCP tcpiiu::tcpJumpTableCAC [] = { - tcpiiu::noopAction, - tcpiiu::eventRespAction, - tcpiiu::badTCPRespAction, - tcpiiu::readRespAction, - tcpiiu::badTCPRespAction, - tcpiiu::badTCPRespAction, - tcpiiu::badTCPRespAction, - tcpiiu::badTCPRespAction, - tcpiiu::badTCPRespAction, - tcpiiu::badTCPRespAction, - tcpiiu::badTCPRespAction, - tcpiiu::exceptionRespAction, - tcpiiu::clearChannelRespAction, - tcpiiu::badTCPRespAction, - tcpiiu::badTCPRespAction, - tcpiiu::readNotifyRespAction, - tcpiiu::badTCPRespAction, - tcpiiu::badTCPRespAction, - tcpiiu::claimCIURespAction, - tcpiiu::writeNotifyRespAction, - tcpiiu::badTCPRespAction, - tcpiiu::badTCPRespAction, - tcpiiu::accessRightsRespAction, - tcpiiu::echoRespAction, - tcpiiu::badTCPRespAction, - tcpiiu::badTCPRespAction, - tcpiiu::verifyAndDisconnectChan, - tcpiiu::verifyAndDisconnectChan + &tcpiiu::noopAction, + &tcpiiu::eventRespAction, + &tcpiiu::badTCPRespAction, + &tcpiiu::readRespAction, + &tcpiiu::badTCPRespAction, + &tcpiiu::badTCPRespAction, + &tcpiiu::badTCPRespAction, + &tcpiiu::badTCPRespAction, + &tcpiiu::badTCPRespAction, + &tcpiiu::badTCPRespAction, + &tcpiiu::badTCPRespAction, + &tcpiiu::exceptionRespAction, + &tcpiiu::clearChannelRespAction, + &tcpiiu::badTCPRespAction, + &tcpiiu::badTCPRespAction, + &tcpiiu::readNotifyRespAction, + &tcpiiu::badTCPRespAction, + &tcpiiu::badTCPRespAction, + &tcpiiu::claimCIURespAction, + &tcpiiu::writeNotifyRespAction, + &tcpiiu::badTCPRespAction, + &tcpiiu::badTCPRespAction, + &tcpiiu::accessRightsRespAction, + &tcpiiu::echoRespAction, + &tcpiiu::badTCPRespAction, + &tcpiiu::badTCPRespAction, + &tcpiiu::verifyAndDisconnectChan, + &tcpiiu::verifyAndDisconnectChan }; tsFreeList < class tcpiiu, 16 > tcpiiu::freeList; diff --git a/src/ca/udpiiu.cpp b/src/ca/udpiiu.cpp index cd341ef5f..a13b27e1e 100644 --- a/src/ca/udpiiu.cpp +++ b/src/ca/udpiiu.cpp @@ -20,36 +20,36 @@ typedef void (*pProtoStubUDP) (udpiiu *piiu, caHdr *pMsg, const struct sockaddr_in *pnet_addr); // UDP protocol dispatch table -const udpiiu::pProtoStubUDP udpiiu::udpJumpTableCAC[] = +const udpiiu::pProtoStubUDP udpiiu::udpJumpTableCAC [] = { - udpiiu::noopAction, - udpiiu::badUDPRespAction, - udpiiu::badUDPRespAction, - udpiiu::badUDPRespAction, - udpiiu::badUDPRespAction, - udpiiu::badUDPRespAction, - udpiiu::searchRespAction, - udpiiu::badUDPRespAction, - udpiiu::badUDPRespAction, - udpiiu::badUDPRespAction, - udpiiu::badUDPRespAction, - udpiiu::exceptionRespAction, - udpiiu::badUDPRespAction, - udpiiu::beaconAction, - udpiiu::notHereRespAction, - udpiiu::badUDPRespAction, - udpiiu::badUDPRespAction, - udpiiu::repeaterAckAction, - udpiiu::badUDPRespAction, - udpiiu::badUDPRespAction, - udpiiu::badUDPRespAction, - udpiiu::badUDPRespAction, - udpiiu::badUDPRespAction, - udpiiu::badUDPRespAction, - udpiiu::badUDPRespAction, - udpiiu::badUDPRespAction, - udpiiu::badUDPRespAction, - udpiiu::badUDPRespAction + &udpiiu::noopAction, + &udpiiu::badUDPRespAction, + &udpiiu::badUDPRespAction, + &udpiiu::badUDPRespAction, + &udpiiu::badUDPRespAction, + &udpiiu::badUDPRespAction, + &udpiiu::searchRespAction, + &udpiiu::badUDPRespAction, + &udpiiu::badUDPRespAction, + &udpiiu::badUDPRespAction, + &udpiiu::badUDPRespAction, + &udpiiu::exceptionRespAction, + &udpiiu::badUDPRespAction, + &udpiiu::beaconAction, + &udpiiu::notHereRespAction, + &udpiiu::badUDPRespAction, + &udpiiu::badUDPRespAction, + &udpiiu::repeaterAckAction, + &udpiiu::badUDPRespAction, + &udpiiu::badUDPRespAction, + &udpiiu::badUDPRespAction, + &udpiiu::badUDPRespAction, + &udpiiu::badUDPRespAction, + &udpiiu::badUDPRespAction, + &udpiiu::badUDPRespAction, + &udpiiu::badUDPRespAction, + &udpiiu::badUDPRespAction, + &udpiiu::badUDPRespAction }; //