Merge pull request #217 from giuseppe/add-error-checks

main: fix lookup for overflow uid
This commit is contained in:
Giuseppe Scrivano 2020-06-20 21:14:45 +02:00 committed by GitHub
commit a7dd94374b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 1 deletions

4
NEWS
View File

@ -1,3 +1,7 @@
* fuse-overlayfs-1.1.1
- fix lookup for overflow uid when it is different than the overflow gid.
* fuse-overlayfs-1.1.0 * fuse-overlayfs-1.1.0
- use openat2(2) when available. - use openat2(2) when available.

6
main.c
View File

@ -666,7 +666,7 @@ find_mapping (unsigned int id, struct ovl_mapping *mapping, bool direct, bool ui
static uid_t static uid_t
get_uid (struct ovl_data *data, uid_t id) get_uid (struct ovl_data *data, uid_t id)
{ {
return find_mapping (id, data->uid_mappings, false, false); return find_mapping (id, data->uid_mappings, false, true);
} }
static uid_t static uid_t
@ -5232,12 +5232,16 @@ main (int argc, char *argv[])
mkdir (path, 0700); mkdir (path, 0700);
free (lo.workdir); free (lo.workdir);
lo.workdir = strdup (path); lo.workdir = strdup (path);
if (lo.workdir == NULL)
error (EXIT_FAILURE, errno, "allocating workdir path");
lo.workdir_fd = open (lo.workdir, O_DIRECTORY); lo.workdir_fd = open (lo.workdir, O_DIRECTORY);
if (lo.workdir_fd < 0) if (lo.workdir_fd < 0)
error (EXIT_FAILURE, errno, "cannot open workdir"); error (EXIT_FAILURE, errno, "cannot open workdir");
dfd = dup (lo.workdir_fd); dfd = dup (lo.workdir_fd);
if (dfd < 0)
error (EXIT_FAILURE, errno, "dup workdir file descriptor");
empty_dirfd (dfd); empty_dirfd (dfd);
} }