switch (key) {
case 0:
param->is_help = 1;
- fprintf(stderr, usage);
+ fprintf(stderr, "%s", usage);
return fuse_opt_add_arg(outargs, "-ho");
default:
return 1;
static void unlock_umount(int mtablock)
{
if (mtablock >= 0) {
- lockf(mtablock, F_ULOCK, 0);
+ int res;
+
+ res = lockf(mtablock, F_ULOCK, 0);
+ if (res < 0) {
+ fprintf(stderr, "%s: error releasing lock: %s\n",
+ progname, strerror(errno));
+ }
close(mtablock);
}
}
}
out:
- chdir("/");
if (res == -1)
return -1;
+ res = chdir("/");
+ if (res == -1) {
+ fprintf(stderr, "%s: failed to chdir to '/'\n", progname);
+ return -1;
+ }
+
return fuse_mnt_remove_mount(progname, mnt);
}
} else
restore_privs();
- chdir("/");
if (mountpoint_fd != -1)
close(mountpoint_fd);
if (res == -1)
goto fail_close_fd;
+ res = chdir("/");
+ if (res == -1) {
+ fprintf(stderr, "%s: failed to chdir to '/'\n", progname);
+ goto fail_close_fd;
+ }
+
if (geteuid() == 0) {
res = add_mount(source, mnt, type, mnt_opts);
if (res == -1) {
btw We don't want to use daemon() function here because
it forks and messes with the file descriptors. */
setsid();
- chdir("/");
+ res = chdir("/");
+ if (res == -1) {
+ fprintf(stderr, "%s: failed to chdir to '/'\n", progname);
+ exit(1);
+ }
sigfillset(&sigset);
sigprocmask(SIG_BLOCK, &sigset, NULL);