diff options
author | Sage Weil <sage@inktank.com> | 2013-07-26 17:14:44 -0700 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-07-26 17:14:44 -0700 |
commit | 4b739005a548b9cbf04856646aa993e2b71793c7 (patch) | |
tree | 4b3178cdf2c12d44a92ee485582ddb98f8fea3ca | |
parent | 323bdaa25709182476d655e62aa4b99f2a53e49b (diff) | |
download | ceph-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.cc | 2 | ||||
-rw-r--r-- | src/osd/OSD.cc | 7 |
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); |