Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset 38aaf005 in mainline


Ignore:
Timestamp:
2017-03-18T15:36:00Z (3 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
master
Children:
ad67aa1
Parents:
0b97336
Message:

Callers of open() must use exactly one of O_RDONLY, O_WRONLY and O_RDWR

Location:
uspace
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/bdsh/cmds/modules/cp/cp.c

    r0b97336 r38aaf005  
    386386        }
    387387
    388         if (-1 == (fd2 = open(dest, O_CREAT))) {
     388        if (-1 == (fd2 = open(dest, O_WRONLY | O_CREAT))) {
    389389                printf("Unable to open destination file %s\n", dest);
    390390                close(fd1);
  • uspace/app/tester/mm/pager1.c

    r0b97336 r38aaf005  
    4848        TPRINTF("Creating temporary file...\n");
    4949
    50         fd = open(TEST_FILE, O_CREAT);
     50        fd = open(TEST_FILE, O_RDWR | O_CREAT);
    5151        if (fd < 0)
    5252                return NULL;
  • uspace/app/tester/vfs/vfs1.c

    r0b97336 r38aaf005  
    7676        TPRINTF("Created directory %s\n", TEST_DIRECTORY);
    7777       
    78         int fd0 = open(TEST_FILE, O_CREAT);
     78        int fd0 = open(TEST_FILE, O_RDWR | O_CREAT);
    7979        if (fd0 < 0)
    8080                return "open() failed";
  • uspace/lib/c/generic/vfs/vfs.c

    r0b97336 r38aaf005  
    388388int open(const char *path, int oflag, ...)
    389389{
    390         // FIXME: Some applications call this incorrectly.
    391         if ((oflag & (O_RDONLY|O_WRONLY|O_RDWR)) == 0) {
    392                 oflag |= O_RDWR;
    393         }
    394 
    395         assert((((oflag & O_RDONLY) != 0) + ((oflag & O_WRONLY) != 0) + ((oflag & O_RDWR) != 0)) == 1);
     390        if (((oflag & (O_RDONLY | O_WRONLY | O_RDWR)) == 0) ||
     391            ((oflag & (O_RDONLY | O_WRONLY)) == (O_RDONLY | O_WRONLY)) ||
     392            ((oflag & (O_RDONLY | O_RDWR)) == (O_RDONLY | O_RDWR)) ||
     393            ((oflag & (O_WRONLY | O_RDWR)) == (O_WRONLY | O_RDWR))) {
     394                errno = EINVAL;
     395                return -1;
     396        }
    396397       
    397398        int fd = vfs_lookup(path, walk_flags(oflag) | WALK_REGULAR);
Note: See TracChangeset for help on using the changeset viewer.