mirror of
https://github.com/sheumann/hush.git
synced 2024-10-29 20:27:40 +00:00
mount: with -vv -f, say what mount() calls we were going to make
782357 728 7476 790561 c1021 busybox_old 782429 728 7476 790633 c1069 busybox_unstripped
This commit is contained in:
parent
f732e96757
commit
b4133683a4
@ -216,7 +216,11 @@ struct globals {
|
|||||||
};
|
};
|
||||||
#define G (*(struct globals*)&bb_common_bufsiz1)
|
#define G (*(struct globals*)&bb_common_bufsiz1)
|
||||||
#define nfs_mount_version (G.nfs_mount_version)
|
#define nfs_mount_version (G.nfs_mount_version)
|
||||||
|
#if ENABLE_FEATURE_MOUNT_VERBOSE
|
||||||
#define verbose (G.verbose )
|
#define verbose (G.verbose )
|
||||||
|
#else
|
||||||
|
#define verbose 0
|
||||||
|
#endif
|
||||||
#define fslist (G.fslist )
|
#define fslist (G.fslist )
|
||||||
#define getmntent_buf (G.getmntent_buf )
|
#define getmntent_buf (G.getmntent_buf )
|
||||||
|
|
||||||
@ -231,9 +235,10 @@ static int verbose_mount(const char *source, const char *target,
|
|||||||
errno = 0;
|
errno = 0;
|
||||||
rc = mount(source, target, filesystemtype, mountflags, data);
|
rc = mount(source, target, filesystemtype, mountflags, data);
|
||||||
if (verbose >= 2)
|
if (verbose >= 2)
|
||||||
bb_perror_msg("mount('%s','%s','%s',0x%08lx,'%s'):%d",
|
bb_perror_msg("would do mount('%s','%s','%s',0x%08lx,'%s'):%d"
|
||||||
source, target, filesystemtype,
|
+ (sizeof("would do ")-1),
|
||||||
mountflags, (char*)data, rc);
|
source, target, filesystemtype,
|
||||||
|
mountflags, (char*)data, rc);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
@ -274,9 +279,9 @@ static void append_mount_options(char **oldopts, const char *newopts)
|
|||||||
|
|
||||||
/* Use the mount_options list to parse options into flags.
|
/* Use the mount_options list to parse options into flags.
|
||||||
* Also return list of unrecognized options if unrecognized!=NULL */
|
* Also return list of unrecognized options if unrecognized!=NULL */
|
||||||
static int parse_mount_options(char *options, char **unrecognized)
|
static long parse_mount_options(char *options, char **unrecognized)
|
||||||
{
|
{
|
||||||
int flags = MS_SILENT;
|
long flags = MS_SILENT;
|
||||||
|
|
||||||
// Loop through options
|
// Loop through options
|
||||||
for (;;) {
|
for (;;) {
|
||||||
@ -360,11 +365,17 @@ void delete_block_backed_filesystems(void);
|
|||||||
|
|
||||||
// Perform actual mount of specific filesystem at specific location.
|
// Perform actual mount of specific filesystem at specific location.
|
||||||
// NB: mp->xxx fields may be trashed on exit
|
// NB: mp->xxx fields may be trashed on exit
|
||||||
static int mount_it_now(struct mntent *mp, int vfsflags, char *filteropts)
|
static int mount_it_now(struct mntent *mp, long vfsflags, char *filteropts)
|
||||||
{
|
{
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
|
||||||
if (fakeIt) goto mtab;
|
if (fakeIt) {
|
||||||
|
if (verbose >= 2)
|
||||||
|
bb_error_msg("would do mount('%s','%s','%s',0x%08lx,'%s')",
|
||||||
|
mp->mnt_fsname, mp->mnt_dir, mp->mnt_type,
|
||||||
|
vfsflags, filteropts);
|
||||||
|
goto mtab;
|
||||||
|
}
|
||||||
|
|
||||||
// Mount, with fallback to read-only if necessary.
|
// Mount, with fallback to read-only if necessary.
|
||||||
for (;;) {
|
for (;;) {
|
||||||
@ -898,7 +909,7 @@ static void error_msg_rpc(const char *msg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NB: mp->xxx fields may be trashed on exit
|
// NB: mp->xxx fields may be trashed on exit
|
||||||
static int nfsmount(struct mntent *mp, int vfsflags, char *filteropts)
|
static int nfsmount(struct mntent *mp, long vfsflags, char *filteropts)
|
||||||
{
|
{
|
||||||
CLIENT *mclient;
|
CLIENT *mclient;
|
||||||
char *hostname;
|
char *hostname;
|
||||||
@ -1507,7 +1518,7 @@ static int nfsmount(struct mntent *mp, int vfsflags, char *filteropts)
|
|||||||
#else /* !ENABLE_FEATURE_MOUNT_NFS */
|
#else /* !ENABLE_FEATURE_MOUNT_NFS */
|
||||||
|
|
||||||
/* Never called. Call should be optimized out. */
|
/* Never called. Call should be optimized out. */
|
||||||
int nfsmount(struct mntent *mp, int vfsflags, char *filteropts);
|
int nfsmount(struct mntent *mp, long vfsflags, char *filteropts);
|
||||||
|
|
||||||
#endif /* !ENABLE_FEATURE_MOUNT_NFS */
|
#endif /* !ENABLE_FEATURE_MOUNT_NFS */
|
||||||
|
|
||||||
@ -1516,7 +1527,8 @@ int nfsmount(struct mntent *mp, int vfsflags, char *filteropts);
|
|||||||
// NB: mp->xxx fields may be trashed on exit
|
// NB: mp->xxx fields may be trashed on exit
|
||||||
static int singlemount(struct mntent *mp, int ignore_busy)
|
static int singlemount(struct mntent *mp, int ignore_busy)
|
||||||
{
|
{
|
||||||
int rc = -1, vfsflags;
|
int rc = -1;
|
||||||
|
long vfsflags;
|
||||||
char *loopFile = 0, *filteropts = 0;
|
char *loopFile = 0, *filteropts = 0;
|
||||||
llist_t *fl = 0;
|
llist_t *fl = 0;
|
||||||
struct stat st;
|
struct stat st;
|
||||||
@ -1702,9 +1714,8 @@ int mount_main(int argc, char **argv)
|
|||||||
unsigned opt;
|
unsigned opt;
|
||||||
struct mntent mtpair[2], *mtcur = mtpair;
|
struct mntent mtpair[2], *mtcur = mtpair;
|
||||||
SKIP_DESKTOP(const int nonroot = 0;)
|
SKIP_DESKTOP(const int nonroot = 0;)
|
||||||
USE_DESKTOP( int nonroot = (getuid() != 0);)
|
|
||||||
|
|
||||||
sanitize_env_if_suid();
|
USE_DESKTOP( int nonroot = ) sanitize_env_if_suid();
|
||||||
|
|
||||||
// Parse long options, like --bind and --move. Note that -o option
|
// Parse long options, like --bind and --move. Note that -o option
|
||||||
// and --option are synonymous. Yes, this means --remount,rw works.
|
// and --option are synonymous. Yes, this means --remount,rw works.
|
||||||
@ -1774,7 +1785,7 @@ int mount_main(int argc, char **argv)
|
|||||||
goto clean_up;
|
goto clean_up;
|
||||||
}
|
}
|
||||||
|
|
||||||
i = parse_mount_options(cmdopts, 0);
|
i = parse_mount_options(cmdopts, 0); // FIXME: should be "long", not "int"
|
||||||
if (nonroot && (i & ~MS_SILENT)) // Non-root users cannot specify flags
|
if (nonroot && (i & ~MS_SILENT)) // Non-root users cannot specify flags
|
||||||
bb_error_msg_and_die(must_be_root);
|
bb_error_msg_and_die(must_be_root);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user