From: yeji01.kim Date: Fri, 23 Mar 2018 05:42:05 +0000 (+0900) Subject: Fix coverity X-Git-Tag: submit/tizen_4.0/20181221.021633^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fheads%2Ftizen_4.0;p=platform%2Fcore%2Fsecurity%2Fklay.git Fix coverity - Add check return - Add exception handling Change-Id: I7e2d58e7c5175846d6bf22837af6aba96737c3af Signed-off-by: yeji01.kim --- diff --git a/src/auth/group.cpp b/src/auth/group.cpp index 67dc291..e306f64 100644 --- a/src/auth/group.cpp +++ b/src/auth/group.cpp @@ -23,6 +23,7 @@ #include #include +#include #include #include @@ -36,7 +37,7 @@ Group::Group(const Group& group) : Group::Group(const std::string& group) { struct group grp, *result; - int bufsize; + int bufsize, ret; bufsize = sysconf(_SC_GETGR_R_SIZE_MAX); if (bufsize == -1) @@ -44,9 +45,12 @@ Group::Group(const std::string& group) std::unique_ptr buf(new char[bufsize]); - ::getgrnam_r(group.c_str(), &grp, buf.get(), bufsize, &result); + ret = ::getgrnam_r(group.c_str(), &grp, buf.get(), bufsize, &result); if (result == NULL) { - throw runtime::Exception("Group doesn't exist"); + if (ret == 0) + throw runtime::Exception("Group doesn't exist"); + else + throw runtime::Exception(runtime::GetSystemErrorMessage(ret)); } name = result->gr_name; @@ -56,7 +60,7 @@ Group::Group(const std::string& group) Group::Group(const gid_t group) { struct group grp, *result; - int bufsize; + int bufsize, ret; bufsize = sysconf(_SC_GETGR_R_SIZE_MAX); if (bufsize == -1) @@ -64,9 +68,12 @@ Group::Group(const gid_t group) std::unique_ptr buf(new char[bufsize]); - ::getgrgid_r(group, &grp, buf.get(), bufsize, &result); + ret = ::getgrgid_r(group, &grp, buf.get(), bufsize, &result); if (result == NULL) { - throw runtime::Exception("Group doesn't exist"); + if (ret == 0) + throw runtime::Exception("Group doesn't exist"); + else + throw runtime::Exception(runtime::GetSystemErrorMessage(ret)); } name = result->gr_name; diff --git a/src/auth/user.cpp b/src/auth/user.cpp index e501cd0..3eba7d9 100644 --- a/src/auth/user.cpp +++ b/src/auth/user.cpp @@ -23,6 +23,7 @@ #include #include +#include #include #include @@ -36,7 +37,7 @@ User::User(const User& user) : User::User(const std::string& user) { struct passwd pwd, *result; - int bufsize; + int bufsize, ret; bufsize = sysconf(_SC_GETPW_R_SIZE_MAX); if (bufsize == -1) @@ -44,9 +45,12 @@ User::User(const std::string& user) std::unique_ptr buf(new char[bufsize]); - ::getpwnam_r(user.c_str(), &pwd, buf.get(), bufsize, &result); + ret = ::getpwnam_r(user.c_str(), &pwd, buf.get(), bufsize, &result); if (result == NULL) { - throw runtime::Exception("User " + user + " doesn't exist"); + if (ret == 0) + throw runtime::Exception("User " + user + " doesn't exist"); + else + throw runtime::Exception(runtime::GetSystemErrorMessage(ret)); } name = result->pw_name; @@ -57,16 +61,19 @@ User::User(const std::string& user) User::User(const uid_t user) { struct passwd pwd, *result; - int bufsize; + int bufsize, ret; bufsize = sysconf(_SC_GETPW_R_SIZE_MAX); if (bufsize == -1) bufsize = 16384; std::unique_ptr buf(new char[bufsize]); - ::getpwuid_r(user, &pwd, buf.get(), bufsize, &result); + ret = ::getpwuid_r(user, &pwd, buf.get(), bufsize, &result); if (result == NULL) { - throw runtime::Exception("User " + std::to_string(user) + "doesn't exist"); + if (ret == 0) + throw runtime::Exception("User " + std::to_string(user) + "doesn't exist"); + else + throw runtime::Exception(runtime::GetSystemErrorMessage(ret)); } name = result->pw_name; diff --git a/src/mainloop.cpp b/src/mainloop.cpp index 92321ea..0188e12 100644 --- a/src/mainloop.cpp +++ b/src/mainloop.cpp @@ -124,7 +124,11 @@ bool Mainloop::dispatch(int timeout) void Mainloop::stop() { - wakeupSignal.send(); + try { + wakeupSignal.send(); + } catch (std::exception &e) { + std::cout << "EXCEPTION ON EVENTFD IN MAINLOOP" << std::endl; + } } void Mainloop::prepare()