forked from Kistler-Group/sdbus-cpp
Fix potential UB in creation of sdbus::Error.
See https://github.com/Kistler-Group/sdbus-cpp/issues/231
This commit is contained in:
committed by
Stanislav Angelovič
parent
bca8e81037
commit
f673e57a47
@ -43,6 +43,11 @@ namespace sdbus {
|
|||||||
: public std::runtime_error
|
: public std::runtime_error
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
explicit Error(const std::string& name, const char* message = nullptr)
|
||||||
|
: Error(name, std::string(message ? message : ""))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
Error(const std::string& name, const std::string& message)
|
Error(const std::string& name, const std::string& message)
|
||||||
: std::runtime_error("[" + name + "] " + message)
|
: std::runtime_error("[" + name + "] " + message)
|
||||||
, name_(name)
|
, name_(name)
|
||||||
|
@ -344,3 +344,21 @@ TEST(AUnixFd, TakesOverNewFdAndClosesOriginalFdOnAdoptingReset)
|
|||||||
EXPECT_THAT(unixFd.get(), Eq(newFd));
|
EXPECT_THAT(unixFd.get(), Eq(newFd));
|
||||||
EXPECT_THAT(::close(fd), Eq(-1));
|
EXPECT_THAT(::close(fd), Eq(-1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(AnError, CanBeConstructedFromANameAndAMessage)
|
||||||
|
{
|
||||||
|
auto error = sdbus::Error("name", "message");
|
||||||
|
EXPECT_THAT(error.getName(), Eq<std::string>("name"));
|
||||||
|
EXPECT_THAT(error.getMessage(), Eq<std::string>("message"));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(AnError, CanBeConstructedFromANameOnly)
|
||||||
|
{
|
||||||
|
auto error1 = sdbus::Error("name");
|
||||||
|
auto error2 = sdbus::Error("name", nullptr);
|
||||||
|
EXPECT_THAT(error1.getName(), Eq<std::string>("name"));
|
||||||
|
EXPECT_THAT(error2.getName(), Eq<std::string>("name"));
|
||||||
|
|
||||||
|
EXPECT_THAT(error1.getMessage(), Eq<std::string>(""));
|
||||||
|
EXPECT_THAT(error2.getMessage(), Eq<std::string>(""));
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user