Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
bgColor#FFCCCC
enum { NO_FILE_POS_VALUES = 3 };

errno_t opener(FILE* file, int *width, int *height, int *data_offset) {
  int file_w;
  int file_h;
  int file_o;
  int rc;
  int offset = 0;

  if (file == NULL) { return EINVAL; }
  if (fscanf(file, "%i %i %i", &file_w, &file_h, &file_o)  != NO_FILE_POS_VALUES) { return EIO; }
  if ((rc = fsetpos(file, &offset)) != 0 ) { return rc; }

  *width = file_w;
  *height = file_h;
  *data_offset = file_o;

  return 0;
}

int main(void) {
  int width;
  int height;
  int data_offset;
  FILE *file;
  /* ... */

  file = fopen("myfile", "rb");
  if (opener(file, &width, &height, &data_offset) != 0 ) { return 0; }

  /* ... */
}

...

Rule

Severity

Likelihood

Remediation Cost

Priority

Level

FIO44-C

2 (medium)

1 (low)

2 (medium)

P2 P4

L3

References

Wiki Markup
\[[ISO/IEC 9899-1999:TC2|AA. C References#ISO/IEC 9899-1999TC2]\] Section 7.19.9.3, "The {{fsetpos}} function"