diff --git a/ChangeLog b/ChangeLog index 4a6f02d6..9eee0d67 100644 --- a/ChangeLog +++ b/ChangeLog @@ -18055,3 +18055,5 @@ * Removed the 'RDSvc::ImportOs' enumeration. * Removed the 'Windows Import Path' and 'Windows Preimport Command' fields from the 'Edit Service' dialog in rdadmin(1). +2018-11-23 Patrick Linstruth + * Fixed bug where requested port could overrun HPI_MAX_NODES. diff --git a/rdhpi/rdhpisoundcard.cpp b/rdhpi/rdhpisoundcard.cpp index b493c6a4..42921f3a 100644 --- a/rdhpi/rdhpisoundcard.cpp +++ b/rdhpi/rdhpisoundcard.cpp @@ -189,36 +189,48 @@ bool RDHPISoundCard::setClockSource(int card,RDHPISoundCard::ClockSource src) bool RDHPISoundCard::haveTimescaling(int card) const { + if(card>=HPI_MAX_ADAPTERS) return false; + return timescale_support[card]; } bool RDHPISoundCard::haveInputVolume(int card,int stream,int port) const { + if(card>=HPI_MAX_ADAPTERS||stream>=HPI_MAX_STREAMS||port>=HPI_MAX_NODES) return false; + return input_stream_volume[card][stream][port]; } bool RDHPISoundCard::haveOutputVolume(int card,int stream,int port) const { + if(card>=HPI_MAX_ADAPTERS||stream>=HPI_MAX_STREAMS||port>=HPI_MAX_NODES) return false; + return output_stream_volume[card][stream][port]; } bool RDHPISoundCard::haveInputLevel(int card,int port) const { + if(card>=HPI_MAX_ADAPTERS||port>=HPI_MAX_NODES) return false; + return input_port_level[card][port]; } bool RDHPISoundCard::haveOutputLevel(int card,int port) const { + if(card>=HPI_MAX_ADAPTERS||port>=HPI_MAX_NODES) return false; + return output_port_level[card][port]; } bool RDHPISoundCard::haveInputStreamVOX(int card,int stream) const { + if(card>=HPI_MAX_ADAPTERS||stream>=HPI_MAX_STREAMS) return false; + return input_stream_vox[card][stream]; }