Skip to content

Commit

Permalink
pool and root mount is not allowed
Browse files Browse the repository at this point in the history
fixed root and pool mount equality

correted root_path case

root and pool mount restrcited

debugging for restricting mount

debugging for restricting mount

debugging for restricting mount

debugging for restricting mount

debugging for restricting mount

debugging for restricting mount

debugging for restricting mount

debugging for restricting mount

debugging for restricting mount

debugging for restricting mount

debugging for restricting mount

debugging for restricting mount

debugging for restricting mount

debugging for restricting mount

debugging for restricting mount

debugging for restricting mount

debugging for restricting mount

debugging for restricting mount

debugging for restricting mount

debugging for restricting mount

self mount, parent mount restricted

removed unwanted changes

review update

Signed-off-by: TulsiJain <tulsi.jain@delphix.com>

remove unwanted files

Signed-off-by: TulsiJain <tulsi.jain@delphix.com>

parent reference error corrected

Signed-off-by: TulsiJain <tulsi.jain@delphix.com>

80 words limit meet

Signed-off-by: TulsiJain <tulsi.jain@delphix.com>

added test cases

added test cases

added test cases

Signed-off-by: TulsiJain <tulsi.jain@delphix.com>

comment corrected

Signed-off-by: TulsiJain <tulsi.jain@delphix.com>

master match

master match

master match

master match

formatting

Signed-off-by: TulsiJain <tulsi.jain@delphix.com>

name corrected
  • Loading branch information
TulsiJain committed Jun 11, 2019
1 parent 047262e commit f14ee5d
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 4 deletions.
2 changes: 2 additions & 0 deletions include/zfs_namecheck.h
Expand Up @@ -43,6 +43,8 @@ typedef enum {
NAME_ERR_RESERVED, /* entire name is reserved */
NAME_ERR_DISKLIKE, /* reserved disk name (c[0-9].*) */
NAME_ERR_TOOLONG, /* name is too long */
NAME_ERR_SELF_REF, /* reserved self path name ('.') */
NAME_ERR_PARENT_REF, /* reserved parent path name ('..') */
NAME_ERR_NO_AT, /* permission set is missing '@' */
} namecheck_err_t;

Expand Down
10 changes: 10 additions & 0 deletions lib/libzfs/libzfs_dataset.c
Expand Up @@ -197,6 +197,16 @@ zfs_validate_name(libzfs_handle_t *hdl, const char *path, int type,
"reserved disk name"));
break;

case NAME_ERR_SELF_REF:
zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
"self reference, '.' is found in name"));
break;

case NAME_ERR_PARENT_REF:
zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
"parent reference, '..' is found in name"));
break;

default:
zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
"(%d) not defined"), why);
Expand Down
21 changes: 21 additions & 0 deletions module/zcommon/zfs_namecheck.c
Expand Up @@ -232,6 +232,27 @@ entity_namecheck(const char *path, namecheck_err_t *why, char *what)
}
}

if (*end == '\0' || *end == '/') {
int component_length = end - start;
/* Validate the contents of this component is not '.' */
if (component_length == 1) {
if (start[0] == '.') {
if (why)
*why = NAME_ERR_SELF_REF;
return (-1);
}
}

/* Validate the content of this component is not '..' */
if (component_length == 2) {
if (start[0] == '.' && start[1] == '.') {
if (why)
*why = NAME_ERR_PARENT_REF;
return (-1);
}
}
}

/* Snapshot or bookmark delimiter found */
if (*end == '@' || *end == '#') {
/* Multiple delimiters are not allowed */
Expand Down
4 changes: 1 addition & 3 deletions module/zfs/dsl_scan.c
Expand Up @@ -3025,10 +3025,8 @@ dsl_scan_async_block_should_pause(dsl_scan_t *scn)
if (zfs_recover)
return (B_FALSE);

if (zfs_async_block_max_blocks != 0 &&
scn->scn_visited_this_txg >= zfs_async_block_max_blocks) {
if (scn->scn_visited_this_txg >= zfs_async_block_max_blocks)
return (B_TRUE);
}

elapsed_nanosecs = gethrtime() - scn->scn_sync_start_time;
return (elapsed_nanosecs / NANOSEC > zfs_txg_timeout ||
Expand Down
Expand Up @@ -90,7 +90,9 @@ set -A args "$TESTPOOL/" "$TESTPOOL//blah" "$TESTPOOL/@blah" \
"$TESTPOOL/blah*blah" "$TESTPOOL/blah blah" \
"-s $TESTPOOL/$TESTFS1" "-b 1092 $TESTPOOL/$TESTFS1" \
"-b 64k $TESTPOOL/$TESTFS1" "-s -b 32k $TESTPOOL/$TESTFS1" \
"$TESTPOOL/$BYND_MAX_NAME" "$TESTPOOL/$BYND_NEST_LIMIT"
"$TESTPOOL/$BYND_MAX_NAME" "$TESTPOOL/$BYND_NEST_LIMIT" \
"$TESTPOOL/." "$TESTPOOL/.." "$TESTPOOL/../blah" "$TESTPOOL/./blah" \
"$TESTPOOL/blah/./blah" "$TESTPOOL/blah/../blah"

log_assert "Verify 'zfs create <filesystem>' fails with bad <filesystem> argument."

Expand Down

0 comments on commit f14ee5d

Please sign in to comment.