summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-07-26 17:14:44 -0700
committerSage Weil <sage@inktank.com>2013-07-26 17:14:44 -0700
commit4b739005a548b9cbf04856646aa993e2b71793c7 (patch)
tree4b3178cdf2c12d44a92ee485582ddb98f8fea3ca
parent323bdaa25709182476d655e62aa4b99f2a53e49b (diff)
downloadceph-4b739005a548b9cbf04856646aa993e2b71793c7.tar.gz
osd: humor coverity
CID 1058392: Out-of-bounds access (OVERRUN_DYNAMIC) [select issue] CID 1058391 (#1 of 1): Out-of-bounds access (OVERRUN) 32. alloc_strlen: Allocating insufficient memory for the terminating null of the string. CID 1058390 (#1 of 1): Unchecked return value from library (CHECKED_RETURN) 13. check_return: Calling function "this->class_handler->open_all_classes()" without checking return value. It wraps a library function that may fail and return an error code. [show details] 14. unchecked_value: No check of the return value of "this->class_handler->open_all_classes()". Signed-off-by: Sage Weil <sage@inktank.com>
-rw-r--r--src/osd/ClassHandler.cc2
-rw-r--r--src/osd/OSD.cc7
2 files changed, 6 insertions, 3 deletions
diff --git a/src/osd/ClassHandler.cc b/src/osd/ClassHandler.cc
index 3cc319efabe..a9a920ba078 100644
--- a/src/osd/ClassHandler.cc
+++ b/src/osd/ClassHandler.cc
@@ -52,7 +52,7 @@ int ClassHandler::open_all_classes()
if (strlen(pde->d_name) > sizeof(CLS_PREFIX) - 1 + sizeof(CLS_SUFFIX) - 1 &&
strncmp(pde->d_name, CLS_PREFIX, sizeof(CLS_PREFIX) - 1) == 0 &&
strcmp(pde->d_name + strlen(pde->d_name) - (sizeof(CLS_SUFFIX) - 1), CLS_SUFFIX) == 0) {
- char cname[strlen(pde->d_name)];
+ char cname[PATH_MAX + 1];
strcpy(cname, pde->d_name + sizeof(CLS_PREFIX) - 1);
cname[strlen(cname) - (sizeof(CLS_SUFFIX) - 1)] = '\0';
dout(10) << __func__ << " found " << cname << dendl;
diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc
index a2cc0ed229e..e3a7c227e15 100644
--- a/src/osd/OSD.cc
+++ b/src/osd/OSD.cc
@@ -1167,8 +1167,11 @@ int OSD::init()
class_handler = new ClassHandler();
cls_initialize(class_handler);
- if (g_conf->osd_open_classes_on_start)
- class_handler->open_all_classes();
+ if (g_conf->osd_open_classes_on_start) {
+ int r = class_handler->open_all_classes();
+ if (r)
+ dout(1) << "warning: got an error loading one or more classes: " << cpp_strerror(r) << dendl;
+ }
// load up "current" osdmap
assert_warn(!osdmap);