aboutsummaryrefslogtreecommitdiffstats
path: root/cmd
diff options
context:
space:
mode:
authorloli10K <[email protected]>2019-05-28 20:14:58 +0200
committerBrian Behlendorf <[email protected]>2019-05-28 11:14:58 -0700
commit0869b74a1edc1e3375b560f788038615f37feac4 (patch)
treeaf9285b94298a84b942ef22fe109f795c7adea92 /cmd
parent841a7a98fc4623e0bcecfa393e7818ade4198a15 (diff)
Endless loop in zpool_do_remove() on platforms with unsigned char
On systems where "char" is an unsigned type the value returned by getopt() will never be negative (-1), leading to an endless loop: this issue prevents both 'zpool remove' and 'zstreamdump' for working on some systems. Reviewed-by: Igor Kozhukhov <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Reviewed-by: Chris Dunlop <[email protected]> Signed-off-by: loli10K <[email protected]> Closes #8789
Diffstat (limited to 'cmd')
-rw-r--r--cmd/zfs/zfs_main.c4
-rw-r--r--cmd/zpool/zpool_main.c2
-rw-r--r--cmd/zstreamdump/zstreamdump.c2
3 files changed, 4 insertions, 4 deletions
diff --git a/cmd/zfs/zfs_main.c b/cmd/zfs/zfs_main.c
index c85154479..d75f089ac 100644
--- a/cmd/zfs/zfs_main.c
+++ b/cmd/zfs/zfs_main.c
@@ -2239,7 +2239,7 @@ zfs_do_upgrade(int argc, char **argv)
boolean_t showversions = B_FALSE;
int ret = 0;
upgrade_cbdata_t cb = { 0 };
- signed char c;
+ int c;
int flags = ZFS_ITER_ARGS_CAN_BE_PATHS;
/* check options */
@@ -3933,7 +3933,7 @@ static int
zfs_do_snapshot(int argc, char **argv)
{
int ret = 0;
- signed char c;
+ int c;
nvlist_t *props;
snap_cbdata_t sd = { 0 };
boolean_t multiple_snaps = B_FALSE;
diff --git a/cmd/zpool/zpool_main.c b/cmd/zpool/zpool_main.c
index 5d3191476..2cb6774b9 100644
--- a/cmd/zpool/zpool_main.c
+++ b/cmd/zpool/zpool_main.c
@@ -973,7 +973,7 @@ zpool_do_remove(int argc, char **argv)
int i, ret = 0;
zpool_handle_t *zhp = NULL;
boolean_t stop = B_FALSE;
- char c;
+ int c;
boolean_t noop = B_FALSE;
boolean_t parsable = B_FALSE;
diff --git a/cmd/zstreamdump/zstreamdump.c b/cmd/zstreamdump/zstreamdump.c
index ed88729b5..a162eceda 100644
--- a/cmd/zstreamdump/zstreamdump.c
+++ b/cmd/zstreamdump/zstreamdump.c
@@ -237,7 +237,7 @@ main(int argc, char *argv[])
struct drr_write_embedded *drrwe = &thedrr.drr_u.drr_write_embedded;
struct drr_object_range *drror = &thedrr.drr_u.drr_object_range;
struct drr_checksum *drrc = &thedrr.drr_u.drr_checksum;
- char c;
+ int c;
boolean_t verbose = B_FALSE;
boolean_t very_verbose = B_FALSE;
boolean_t first = B_TRUE;