Доступ к буферу выходит за пределы, о чем сообщает cppcheck.

Инструмент статического анализа кода cppcheck сообщил о серьезной ошибке в приведенном ниже коде: Я не знаю, в чем проблема.

      #define NUM_UPDATE_COUNT 3
      #define MAX_NUM_CH_1LINE 27

      wchar_t m_cCnt_Buf[NUM_UPDATE_COUNT][MAX_NUM_CH_1LINE];

      Init_PushPt();

      memset((char *)&m_cCnt_Buf[1], 0x20, sizeof(m_cCnt_Buf[1])); /* Buffer is accessed out of bounds: m_cCnt_Buf */
      memset((char *)&m_cCnt_Buf[2], 0x20, sizeof(m_cCnt_Buf[2])); /* Buffer is accessed out of bounds: m_cCnt_Buf */               
      m_cCnt_Buf[1][2] = '0';
      m_cCnt_Buf[2][8] = '0';

Кажется, в приведенном выше коде нет ничего плохого. Любые идеи, почему они подхватываются и как это исправить? Заранее спасибо.


person canon    schedule 12.09.2014    source источник


Ответы (1)


Я разработчик Cppcheck.

Интересно. Мне кажется это ФП. Однако мне не удается воспроизвести этот FP с помощью Cppcheck.

person Daniel Marjamäki    schedule 15.09.2014
comment
Вы можете сообщить о любом Cppcheck-FP, который вы видите в системе отслеживания проблем Cppcheck (trac.cppcheck.net), исправляя FP отчеты имеют высокий приоритет. В отчет должен быть включен минимальный пример кода, воспроизводящий FP. - person Daniel Marjamäki; 16.09.2014