From 88446f56ec9f9748080ee0beda85a52299876de7 Mon Sep 17 00:00:00 2001 From: Rishabh Dave Date: Mon, 7 May 2018 12:57:13 +0000 Subject: [PATCH] rados.pyx: make all exceptions accept keyword arguments Moving the code that makes exceptions accept keyword arguments from the exception OSError to Error prevents a crash when exceptions not inheriting OSError are received. Fixes: http://tracker.ceph.com/issues/24033 Signed-off-by: Rishabh Dave (cherry picked from commit 16458025da1c5854f1ef3840ac7d58fb5a715c64) --- src/pybind/rados/rados.pyx | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/pybind/rados/rados.pyx b/src/pybind/rados/rados.pyx index eede31e6c9af7..67725295dcd36 100644 --- a/src/pybind/rados/rados.pyx +++ b/src/pybind/rados/rados.pyx @@ -337,21 +337,12 @@ ADMIN_AUID = 0 class Error(Exception): """ `Error` class, derived from `Exception` """ - pass - - -class InvalidArgumentError(Error): - pass - - -class OSError(Error): - """ `OSError` class, derived from `Error` """ def __init__(self, message, errno=None): - super(OSError, self).__init__(message) + super(Exception, self).__init__(message) self.errno = errno def __str__(self): - msg = super(OSError, self).__str__() + msg = super(Exception, self).__str__() if self.errno is None: return msg return '[errno {0}] {1}'.format(self.errno, msg) @@ -359,6 +350,13 @@ class OSError(Error): def __reduce__(self): return (self.__class__, (self.message, self.errno)) +class InvalidArgumentError(Error): + pass + +class OSError(Error): + """ `OSError` class, derived from `Error` """ + pass + class InterruptedOrTimeoutError(OSError): """ `InterruptedOrTimeoutError` class, derived from `OSError` """ pass -- 2.39.5