On Linux and IRIX, fail gracefully when we fail to open /etc/mtab,
instead of segfaulting. Move strdup'ing cacheMountDir until after
opening /etc/mtab, to simplify the error handling.
Reviewed-on: http://gerrit.openafs.org/4825
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
(cherry picked from commit
b1f0bb472e237f5a6f88449db44f030c08a5a324)
Change-Id: Id12f6190eac15593dd32fd46db354e169d19dc2f
Reviewed-on: http://gerrit.openafs.org/6303
Tested-by: Derrick Brashear <shadow@dementix.org>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
#else
#if defined(AFS_SGI_ENV) || defined(AFS_LINUX20_ENV)
struct mntent tmntent;
- char *dir = strdup(cacheMountDir);
+ char *dir;
int i;
+ tfilep = setmntent("/etc/mtab", "a+");
+ if (!tfilep) {
+ printf("Can't open /etc/mtab for writing (errno %d); not adding "
+ "an entry for AFS\n", errno);
+ return 1;
+ }
+
+ dir = strdup(cacheMountDir);
+
/* trim trailing slashes; don't look at dir[0] in case we are somehow
* just "/" */
for (i = strlen(dir)-1; i > 0; i--) {
}
}
- tfilep = setmntent("/etc/mtab", "a+");
tmntent.mnt_fsname = "AFS";
tmntent.mnt_dir = dir;
tmntent.mnt_type = "afs";