mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-02-03 09:44:01 -05:00
NCOF: secure possible index overflow by 1 due to float to int conversion
This commit is contained in:
parent
ae8eddbfda
commit
34081dd50b
@ -23,16 +23,19 @@
|
||||
#undef M_PI
|
||||
#define M_PI 3.14159265358979323846
|
||||
|
||||
Real NCOF::m_table[NCOF::TableSize];
|
||||
Real NCOF::m_table[NCOF::TableSize+1];
|
||||
bool NCOF::m_tableInitialized = false;
|
||||
float NCOF::m_tableSizeLimit = (float) NCOF::TableSize;
|
||||
|
||||
void NCOF::initTable()
|
||||
{
|
||||
if(m_tableInitialized)
|
||||
if(m_tableInitialized) {
|
||||
return;
|
||||
}
|
||||
|
||||
for(int i = 0; i < TableSize; i++)
|
||||
for(int i = 0; i <= TableSize; i++) {
|
||||
m_table[i] = cos((2.0 * M_PI * i) / TableSize);
|
||||
}
|
||||
|
||||
m_tableInitialized = true;
|
||||
}
|
||||
|
@ -25,8 +25,9 @@ private:
|
||||
enum {
|
||||
TableSize = (1 << 12),
|
||||
};
|
||||
static Real m_table[TableSize];
|
||||
static Real m_table[TableSize+1];
|
||||
static bool m_tableInitialized;
|
||||
static float m_tableSizeLimit;
|
||||
|
||||
static void initTable();
|
||||
|
||||
@ -42,10 +43,12 @@ public:
|
||||
int nextPhase() //!< Increment phase and return its integer value
|
||||
{
|
||||
m_phase += m_phaseIncrement;
|
||||
while(m_phase >= TableSize)
|
||||
while(m_phase >= m_tableSizeLimit) {
|
||||
m_phase -= TableSize;
|
||||
while(m_phase < 0)
|
||||
}
|
||||
while(m_phase < 0.0) {
|
||||
m_phase += TableSize;
|
||||
}
|
||||
return (int) m_phase;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user