From 6e12a89ecef476b1b79e14a5108e98bcd63498d6 Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Wed, 20 May 2009 11:16:22 -0700 Subject: [PATCH] class: don't return nonexisting method --- src/common/ClassHandler.cc | 8 ++++++-- src/librados.cc | 6 ++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/common/ClassHandler.cc b/src/common/ClassHandler.cc index 5043f391f9ad0..0b6d443cf656f 100644 --- a/src/common/ClassHandler.cc +++ b/src/common/ClassHandler.cc @@ -134,8 +134,12 @@ ClassHandler::ClassMethod *ClassHandler::ClassData::register_method(const char * ClassHandler::ClassMethod *ClassHandler::ClassData::get_method(const char *mname) { - ClassHandler::ClassMethod *method = &methods_map[mname]; - return method; + map::iterator iter = methods_map.find(mname); + + if (iter == methods_map.end()) + return NULL; + + return &(iter->second); } void ClassHandler::ClassData::unregister_method(ClassHandler::ClassMethod *method) diff --git a/src/librados.cc b/src/librados.cc index 80ce5f9ac25fa..e0a2092698771 100644 --- a/src/librados.cc +++ b/src/librados.cc @@ -239,6 +239,9 @@ int RadosClient::exec(int pool, object_t& oid, const char *cls, const char *meth lock.Unlock(); + if (outbl.length() < out_len) + out_len = outbl.length(); + if (out_len) memcpy(buf, outbl.c_str(), out_len); @@ -269,6 +272,9 @@ int RadosClient::read(int pool, object_t& oid, char *buf, off_t off, size_t len) lock.Unlock(); + if (bl.length() < len) + len = bl.length(); + if (len) memcpy(buf, bl.c_str(), len); -- 2.39.5