...
Code Block | ||
---|---|---|
| ||
enum { NO_FILE_POS_VALUES = 3 }; int opener( FILE *file, int *width, int *height, int *data_offset ) { int file_w; int file_h; int file_o; fpos_t offset; if (file == NULL) { return EINVAL; } errno = 0; if (fgetpos(file, &offset) != 0) { return errno; } if (fscanf(file, ""%i %i %i"", &file_w, &file_h, &file_o) != NO_FILE_POS_VALUES) { return EIO; } errno = 0; if (fsetpos(file, &offset) != 0) { return errno; } if (width != NULL) { *width = file_w; } if (height != NULL) { *height = file_h; } if (data_offset != NULL) { *data_offset = file_o; } return 0; } |
...
Code Block | ||
---|---|---|
| ||
#include <errno.h><errno.h> 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; fpos_t offset; if (file == NULL) { return EINVAL; } errno = 0; if (fgetpos(file, &offset) != 0 ) { return errno; } if (fscanf(file, ""%i %i %i"", &file_w, &file_h, &file_o) != NO_FILE_POS_VALUES) { return EIO; } errno = 0; if (fsetpos(file, &offset) != 0 ) { return errno; } if (width != NULL) { *width = file_w; } if (height != NULL) { *height = file_h; } if (data_offset != NULL) { *data_offset = file_o; } return 0; } |
...
Search for vulnerabilities resulting from the violation of this rule on the CERT website.
Other Languages
This rule appears in the C++ Secure Coding Standard as DCL09-CPP. Declare functions that return an errno error code with a return type of errno_t.
References
Wiki Markup |
---|
\[[ISO/IEC 9899:1999|AA. C References#ISO/IEC 9899-1999]\] Section 6.7.5.3, ""Function declarators (including prototypes)"" \[[ISO/IEC PDTR 24772|AA. C References#ISO/IEC PDTR 24772]\] ""NZN Returning error status"" \[[ISO/IEC TR 24731-1:2007|AA. C References#ISO/IEC TR 24731-1-2007]\] \[[MISRA 04|AA. C References#MISRA 04]\] Rule 20.5 \[[Open Group 04|AA. C References#Open Group 04]\] |
...
02. Declarations and Initialization (DCL)