Wiki Markup |
---|
Calling a function with incorrect arguments can result in unexpected or unintended program behavior. Conventional functions that are appropriately declared \[[DCL07-A. Include the appropriate type information in function declarators]\] will fail compilation if they are supplied with the wrong number or types of arguments. However, there are cases where supplying the incorrect arguments to a function will only generate compiler warnings. These warnings should be resolved \[[MSC00-A. Compile cleanly at high warning levels]\], but do not prevent program compilation. |
Non-Compliant Code Example: (variadic functions)
Wiki Markup |
---|
The POSIX {{open()}} \[[Open Group 04|AA. C References#Open Group 04]\] is a variadic function with the following prototype: |
...
Wiki Markup |
---|
The {{open()}} function accepts a third argument to determine a newly created file's access mode. If {{open()}} is used to create a new file and the third argument is omitted, the file may be created with unintended access permissions\[[FIO06-A. Create files with appropriate access permissions]\]. |
Code Block |
---|
|
/* ... */
int fd = open(file_name, O_CREAT | O_WRONLY); /* access permissions are missing */
if (fd == -1){
/* Handle Error */
}
/* ... */
|
Compliant Solution: (variadic functions)
To correct this example, a third argument is specified in the call to open()
.
...