+2005-09-26 Miklos Szeredi <miklos@szeredi.hu>
+
+ * fusermount: allow user umount in the case when /etc/mtab is a
+ symlink to /proc/mounts. Reported by Balázs Pozsár.
+
2005-09-23 Miklos Szeredi <miklos@szeredi.hu>
* Check for special node ID values in lookup and creation
FILE *fp;
FILE *newfp;
const char *user = NULL;
+ char uidstr[32];
+ unsigned uidlen = 0;
int found;
fp = setmntent(mtab, "r");
user = get_user_name();
if (user == NULL)
return -1;
+
+ uidlen = sprintf(uidstr, "%u", getuid());
}
found = 0;
removed = 1;
else {
char *p = strstr(entp->mnt_opts, "user=");
- if (p != NULL && strcmp(p + 5, user) == 0)
+ if (p && (p == entp->mnt_opts || *(p-1) == ',') &&
+ strcmp(p + 5, user) == 0)
+ removed = 1;
+ /* /etc/mtab is a link pointing to /proc/mounts: */
+ else if ((p = strstr(entp->mnt_opts, "user_id=")) &&
+ (p == entp->mnt_opts || *(p-1) == ',') &&
+ strncmp(p + 8, uidstr, uidlen) == 0 &&
+ (*(p+8+uidlen) == ',' || *(p+8+uidlen) == '\0'))
removed = 1;
}
}