# V1035. Only values returned from fgetpos() can be used as arguments to fsetpos().

Согласно стандарту языка Си, вызов функции 'fsetpos' с аргументом, полученным не из функции 'fgetpos', приводит к неопределённому поведению (UB, Undefined behavior).

Рассмотрим пример:

    int foo()
    {
      FILE * pFile;
      fpos_t position;

      pFile = fopen("file.txt", "w");
      memset(&position, 0, sizeof(position));
      fputs("That is a sample", pFile);
      fsetpos(pFile, &position);
      fputs("This", pFile);
      fclose(pFile);
      return 0;
    }

Значение переменной 'position' не было получено функцией 'fgetpos', что может привести к сбою программы.

Исправленный вариант:

    int foo()
    {
      FILE * pFile;
      fpos_t position;

      pFile = fopen("file.txt", "w");
      fgetpos(pFile, &position);
      fputs("That is a sample", pFile);
      fsetpos(pFile, &position);
      fputs("This", pFile);
      fclose(pFile);
      return 0;
    }

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

CERT-FIO44-C