113 lines
3.7 KiB
Diff
113 lines
3.7 KiB
Diff
|
autofs-5.1.8 - eliminate realpath from mount of submount
|
||
|
|
||
|
From: Ian Kent <raven@themaw.net>
|
||
|
|
||
|
None of the tests I have show that the realpath local variable in the
|
||
|
autofs submount mount function is needed, remove it.
|
||
|
|
||
|
Signed-off-by: Ian Kent <raven@themaw.net>
|
||
|
---
|
||
|
CHANGELOG | 1 +
|
||
|
modules/mount_autofs.c | 25 ++++---------------------
|
||
|
2 files changed, 5 insertions(+), 21 deletions(-)
|
||
|
|
||
|
--- autofs-5.1.7.orig/CHANGELOG
|
||
|
+++ autofs-5.1.7/CHANGELOG
|
||
|
@@ -139,6 +139,7 @@
|
||
|
- get rid entry thid field.
|
||
|
- continue expire immediately after submount check.
|
||
|
- add buffer length checks to autofs mount_mount().
|
||
|
+- eliminate realpath from mount of submount.
|
||
|
|
||
|
25/01/2021 autofs-5.1.7
|
||
|
- make bind mounts propagation slave by default.
|
||
|
--- autofs-5.1.7.orig/modules/mount_autofs.c
|
||
|
+++ autofs-5.1.7/modules/mount_autofs.c
|
||
|
@@ -50,7 +50,6 @@ int mount_mount(struct autofs_point *ap,
|
||
|
{
|
||
|
struct startup_cond suc;
|
||
|
pthread_t thid;
|
||
|
- char realpath[PATH_MAX + 1];
|
||
|
char mountpoint[PATH_MAX + 1];
|
||
|
const char **argv;
|
||
|
int argc, status;
|
||
|
@@ -73,11 +72,6 @@ int mount_mount(struct autofs_point *ap,
|
||
|
|
||
|
/* Root offset of multi-mount */
|
||
|
if (root[strlen(root) - 1] == '/') {
|
||
|
- err = snprintf(realpath, PATH_MAX + 1, "%s/%s", ap->path, name);
|
||
|
- if (err > PATH_MAX) {
|
||
|
- error(ap->logopt, MODPREFIX "string too long for realpath");
|
||
|
- return 1;
|
||
|
- }
|
||
|
err = snprintf(mountpoint, PATH_MAX + 1, "%s", root);
|
||
|
if (err > PATH_MAX) {
|
||
|
error(ap->logopt, MODPREFIX "string too long for mountpoint");
|
||
|
@@ -91,22 +85,12 @@ int mount_mount(struct autofs_point *ap,
|
||
|
error(ap->logopt, MODPREFIX "string too long for mountpoint");
|
||
|
return 1;
|
||
|
}
|
||
|
- err = snprintf(realpath, PATH_MAX + 1, "%s", name);
|
||
|
- if (err > PATH_MAX) {
|
||
|
- error(ap->logopt, MODPREFIX "string too long for realpath");
|
||
|
- return 1;
|
||
|
- }
|
||
|
} else {
|
||
|
err = snprintf(mountpoint, PATH_MAX + 1, "%s", root);
|
||
|
if (err > PATH_MAX) {
|
||
|
error(ap->logopt, MODPREFIX "string too long for mountpoint");
|
||
|
return 1;
|
||
|
}
|
||
|
- err = snprintf(realpath, PATH_MAX + 1, "%s", name);
|
||
|
- if (err > PATH_MAX) {
|
||
|
- error(ap->logopt, MODPREFIX "string too long for realpath");
|
||
|
- return 1;
|
||
|
- }
|
||
|
}
|
||
|
} else {
|
||
|
err = snprintf(mountpoint, PATH_MAX + 1, "%s/%s", root, name);
|
||
|
@@ -114,7 +98,6 @@ int mount_mount(struct autofs_point *ap,
|
||
|
error(ap->logopt, MODPREFIX "string too long for mountpoint");
|
||
|
return 1;
|
||
|
}
|
||
|
- strcpy(realpath, mountpoint);
|
||
|
}
|
||
|
|
||
|
options = NULL;
|
||
|
@@ -180,7 +163,7 @@ int mount_mount(struct autofs_point *ap,
|
||
|
|
||
|
master = ap->entry->master;
|
||
|
|
||
|
- entry = master_new_mapent(master, realpath, ap->entry->age);
|
||
|
+ entry = master_new_mapent(master, mountpoint, ap->entry->age);
|
||
|
if (!entry) {
|
||
|
error(ap->logopt,
|
||
|
MODPREFIX "failed to malloc master_mapent struct");
|
||
|
@@ -332,7 +315,7 @@ int mount_mount(struct autofs_point *ap,
|
||
|
mnt = mnts_add_submount(nap);
|
||
|
if (!mnt) {
|
||
|
crit(ap->logopt,
|
||
|
- MODPREFIX "failed to allocate mount %s", realpath);
|
||
|
+ MODPREFIX "failed to allocate mount %s", mountpoint);
|
||
|
handle_mounts_startup_cond_destroy(&suc);
|
||
|
master_free_map_source(source, 1);
|
||
|
master_free_mapent(entry);
|
||
|
@@ -349,7 +332,7 @@ int mount_mount(struct autofs_point *ap,
|
||
|
crit(ap->logopt,
|
||
|
MODPREFIX
|
||
|
"failed to create mount handler thread for %s",
|
||
|
- realpath);
|
||
|
+ mountpoint);
|
||
|
handle_mounts_startup_cond_destroy(&suc);
|
||
|
mnts_remove_submount(nap->path);
|
||
|
master_free_map_source(source, 1);
|
||
|
@@ -370,7 +353,7 @@ int mount_mount(struct autofs_point *ap,
|
||
|
|
||
|
if (suc.status) {
|
||
|
crit(ap->logopt,
|
||
|
- MODPREFIX "failed to create submount for %s", realpath);
|
||
|
+ MODPREFIX "failed to create submount for %s", mountpoint);
|
||
|
handle_mounts_startup_cond_destroy(&suc);
|
||
|
mnts_remove_submount(nap->path);
|
||
|
master_free_map_source(source, 1);
|