diff options
Diffstat (limited to 'cpukit/libcsupport/src/fchown.c')
-rw-r--r-- | cpukit/libcsupport/src/fchown.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/cpukit/libcsupport/src/fchown.c b/cpukit/libcsupport/src/fchown.c index b5891bf36d..d0d04005d8 100644 --- a/cpukit/libcsupport/src/fchown.c +++ b/cpukit/libcsupport/src/fchown.c @@ -28,11 +28,14 @@ int fchown( int fd, uid_t owner, gid_t group ) iop = rtems_libio_iop( fd ); rtems_libio_check_is_open(iop); - rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE ); - - rtems_filesystem_instance_lock( &iop->pathinfo ); - rv = (*iop->pathinfo.ops->chown_h)( &iop->pathinfo, owner, group ); - rtems_filesystem_instance_unlock( &iop->pathinfo ); + if (iop->pathinfo.mt_entry->writeable) { + rtems_filesystem_instance_lock( &iop->pathinfo ); + rv = (*iop->pathinfo.ops->chown_h)( &iop->pathinfo, owner, group ); + rtems_filesystem_instance_unlock( &iop->pathinfo ); + } else { + errno = EROFS; + rv = -1; + } return rv; } |