scripts/qom-fuse: ensure QOMFuse.read always returns bytes
- Use FuseOSError to signal ENOENT instead of returning it - Wrap qom-get in str(), as we don't always know its type - The empty return should be b'', not ''. Signed-off-by: John Snow <jsnow@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-id: 20210603003719.1321369-15-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
This commit is contained in:
parent
9ec8a38694
commit
2cea713462
@ -127,19 +127,19 @@ class QOMFuse(QOMCommand, Operations):
|
|||||||
|
|
||||||
def read(self, path, size, offset, fh):
|
def read(self, path, size, offset, fh):
|
||||||
if not self.is_property(path):
|
if not self.is_property(path):
|
||||||
return -ENOENT
|
raise FuseOSError(ENOENT)
|
||||||
|
|
||||||
path, prop = path.rsplit('/', 1)
|
path, prop = path.rsplit('/', 1)
|
||||||
if path == '':
|
if path == '':
|
||||||
path = '/'
|
path = '/'
|
||||||
try:
|
try:
|
||||||
data = self.qmp.command('qom-get', path=path, property=prop)
|
data = str(self.qmp.command('qom-get', path=path, property=prop))
|
||||||
data += '\n' # make values shell friendly
|
data += '\n' # make values shell friendly
|
||||||
except QMPResponseError as err:
|
except QMPResponseError as err:
|
||||||
raise FuseOSError(EPERM) from err
|
raise FuseOSError(EPERM) from err
|
||||||
|
|
||||||
if offset > len(data):
|
if offset > len(data):
|
||||||
return ''
|
return b''
|
||||||
|
|
||||||
return bytes(data[offset:][:size], encoding='utf-8')
|
return bytes(data[offset:][:size], encoding='utf-8')
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user