diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2023-09-08 22:41:21 +0200 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2023-09-08 22:41:21 +0200 |
commit | c5913771a641ec54308ef5054837198be2a6fd63 (patch) | |
tree | 46c2cd2d02a580d86da53537e31bbe0e623f4d61 | |
parent | bedefff9e25b6b2bdc13e0268a437f82dc4b4798 (diff) | |
download | newlib-c5913771a641ec54308ef5054837198be2a6fd63.zip newlib-c5913771a641ec54308ef5054837198be2a6fd63.tar.gz newlib-c5913771a641ec54308ef5054837198be2a6fd63.tar.bz2 |
Cygwin: fix an ugly cast
fhandler_base::fchown casts any fhandler landing here to a
fhandler_disk_file. That's ugly and dangerous. Duplicate
the path_conv info into an explicitly create fhandler_disk_file
instead and call fchmod on that.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
-rw-r--r-- | winsup/cygwin/fhandler/base.cc | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/winsup/cygwin/fhandler/base.cc b/winsup/cygwin/fhandler/base.cc index 6163df2..cdef01a 100644 --- a/winsup/cygwin/fhandler/base.cc +++ b/winsup/cygwin/fhandler/base.cc @@ -1725,7 +1725,10 @@ int fhandler_base::fchown (uid_t uid, gid_t gid) { if (pc.is_fs_special ()) - return ((fhandler_disk_file *) this)->fhandler_disk_file::fchown (uid, gid); + { + fhandler_disk_file fh (pc); + return fh.fchown (uid, gid); + } /* By default, just succeeds. */ return 0; } |