diff --git a/src/ntfs-3g.c b/src/ntfs-3g.c index 91091720..3a2f4d93 100644 --- a/src/ntfs-3g.c +++ b/src/ntfs-3g.c @@ -2077,6 +2077,7 @@ int main(int argc, char *argv[]) fuse_fstype fstype; struct stat sbuf; int use_blkdev = 0; + int uid, euid, suid; utils_set_locale(); ntfs_log_set_handler(ntfs_log_handler_stderr); @@ -2095,6 +2096,20 @@ int main(int argc, char *argv[]) return 3; } + if (getresuid(&uid, &euid, &suid)) { + ntfs_log_perror("Failed to get user ID's"); + free(parsed_options); + ntfs_fuse_destroy(); + return 9; + } + + if (setuid(euid)) { + ntfs_log_perror("Failed to set user ID to %d", euid); + free(parsed_options); + ntfs_fuse_destroy(); + return 8; + } + fstype = get_fuse_fstype(); if (fstype == FSTYPE_NONE || fstype == FSTYPE_UNKNOWN) fstype = load_fuse_module(); @@ -2154,6 +2169,13 @@ int main(int argc, char *argv[]) return 6; } + if (setuid(uid)) { + ntfs_log_perror("Failed to set user ID to %d", uid); + free(parsed_options); + ntfs_fuse_destroy(); + return 8; + } + if (S_ISBLK(sbuf.st_mode) && (fstype == FSTYPE_FUSE)) ntfs_log_info(fuse26_kmod_msg); @@ -2168,6 +2190,7 @@ int main(int argc, char *argv[]) #endif } } + ntfs_log_info("Version %s\n", VERSION); ntfs_log_info("Mounted %s (%s, label \"%s\", NTFS %d.%d)\n", opts.device, (ctx->ro) ? "Read-Only" : "Read-Write",