Changeset 38aaf005 in mainline for uspace/lib/c/generic/vfs/vfs.c


Ignore:
Timestamp:
2017-03-18T15:36:00Z (8 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
ad67aa1
Parents:
0b97336
Message:

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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.