From 4c1029bc083b44d87f01f4e503d3ad64a568df52 Mon Sep 17 00:00:00 2001 From: Jos Collin Date: Tue, 3 Dec 2019 14:42:28 +0530 Subject: [PATCH] mgr/volumes: check for string values in uid/gid chown allows strings as per bbbfb44453f204286a8ff312349d42afde5fced6, which caused this error. Eventhough uid/gid are input as CephInt, the qa tests can pass in only string values to _fs_cmd. So try converting the incoming uid/gid to int in create_subvolume and create_group. It might be a valid string. Fixes: https://tracker.ceph.com/issues/43038 Signed-off-by: Jos Collin --- src/pybind/mgr/volumes/fs/subvolume.py | 36 ++++++++++++++++++++------ 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/src/pybind/mgr/volumes/fs/subvolume.py b/src/pybind/mgr/volumes/fs/subvolume.py index 0038f5e0399..6b88da20d52 100644 --- a/src/pybind/mgr/volumes/fs/subvolume.py +++ b/src/pybind/mgr/volumes/fs/subvolume.py @@ -109,13 +109,23 @@ class SubVolume(object): groupstat = self.fs.stat(spec.group_path) if uid is None: uid = int(groupstat.st_uid) - elif uid < 0: - raise VolumeException(-errno.EINVAL, "Provide a valid uid") + else: + try: + uid = int(uid) + if uid < 0: + raise ValueError + except ValueError: + raise VolumeException(-errno.EINVAL, "Invalid uid") if gid is None: gid = int(groupstat.st_gid) - elif gid < 0: - raise VolumeException(-errno.EINVAL, "Provide a valid gid") + else: + try: + gid = int(gid) + if gid < 0: + raise ValueError + except ValueError: + raise VolumeException(-errno.EINVAL, "Invalid gid") try: self.fs.chown(subvolpath, uid, gid) @@ -302,13 +312,23 @@ class SubVolume(object): if uid is None: uid = 0 - elif uid < 0: - raise VolumeException(-errno.EINVAL, "Provide a valid uid") + else: + try: + uid = int(uid) + if uid < 0: + raise ValueError + except ValueError: + raise VolumeException(-errno.EINVAL, "Invalid uid") if gid is None: gid = 0 - elif gid < 0: - raise VolumeException(-errno.EINVAL, "Provide a valid gid") + else: + try: + gid = int(gid) + if gid < 0: + raise ValueError + except ValueError: + raise VolumeException(-errno.EINVAL, "Invalid gid") try: self.fs.chown(path, uid, gid) -- 2.39.5