diff --git a/src/encfs_wrapper.cpp b/src/encfs_wrapper.cpp index 347337b..961818b 100644 --- a/src/encfs_wrapper.cpp +++ b/src/encfs_wrapper.cpp @@ -33,24 +33,24 @@ bool is_mounted(const char *mount_dir) { + struct mntent *m; FILE *f = setmntent("/etc/mtab", "r"); - char *mount_dir_expanded = realpath(mount_dir, NULL); - if (mount_dir_expanded == NULL) { - // no such file or dir, ... - // so: not mounted - // perror("cryptkeeper, is_mounted"); + char *mount_dir_expanded, *mnt_dir_expanded; + + if (!(mount_dir_expanded = realpath(mount_dir, NULL))) return false; - } - for (;;) { - char *mnt_dir_expanded; - struct mntent *m = getmntent(f); - if (!m) break; - mnt_dir_expanded = realpath(m->mnt_dir, NULL); - if (strcmp(mount_dir_expanded, mnt_dir_expanded)==0) { + + while(m = getmntent(f)) { + if(mnt_dir_expanded = realpath(m->mnt_dir, NULL)) { + if (strcmp(mount_dir_expanded, mnt_dir_expanded)==0) { + free(mnt_dir_expanded); + free(mount_dir_expanded); + return true; + } free(mnt_dir_expanded); - return true; - } + } } + free(mount_dir_expanded); return false; }