# V1038. It is suspicious that a char or string literal is added to a pointer.

Анализатор обнаружил ситуацию, когда к символьному литералу прибавляется указатель. Скорее всего, это ошибка.

Например, к строке, имеющей тип 'const char*', программист хочет дописать символ:

    const char* Foo()
    {
      return "Hello world!\n";
    }

    int main()
    {
      const char* bar = 'g' + Foo();
      printf("%s", bar);
      return 0;
    }

В этом случае произойдет прибавление к указателю числового значения символа 'g', в результате чего возможен выход за границы строки. Для исправления этой ошибки следует использовать, по возможности, специальный класс 'std::string' или производить операции с памятью:

    const char* Foo()
    {
      return "Hello world!\n";
    }

    int main()
    {
      std::string bar = 'g' + std::string(Foo());
      printf("%s", bar.c_str());
      return 0;
    }

Выявляемые диагностикой ошибки классифицируются согласно ГОСТ Р 71207–2024 как критические и относятся к типу: Ошибки переполнения буфера (записи или чтения за пределами выделенной для буфера памяти).

Данная диагностика классифицируется как:

CWE-468