Skip to content

Commit 750d23f

Browse files
Config::mapGetBool causes segmentation fault when value_out is nullptr (#1471) (#1480)
(cherry picked from commit 72813d1) Signed-off-by: Alejandro Hernandez Cordero <[email protected]> Co-authored-by: Alejandro Hernández Cordero <[email protected]>
1 parent 04cb4f3 commit 750d23f

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

rviz_common/src/rviz_common/config.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,10 @@ bool Config::mapGetFloat(const QString & key, float * value_out) const
262262

263263
bool Config::mapGetBool(const QString & key, bool * value_out) const
264264
{
265+
if (value_out == nullptr) {
266+
return false;
267+
}
268+
265269
QVariant v;
266270
if (mapGetValue(key, &v) && (v.type() == QVariant::Bool || v.type() == QVariant::String)) {
267271
*value_out = v.toBool();

rviz_common/test/config_test.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,17 @@ TEST(Config, mapGetValue_key_not_found_null_check) {
7676
EXPECT_EQ(s_default, "my_default_value");
7777
}
7878

79+
TEST(Config, handle_mixed_type_values_for_keys) {
80+
rviz_common::Config c;
81+
c.mapSetValue("mixed_key", "123abc");
82+
EXPECT_FALSE(c.mapGetInt("mixed_key", nullptr));
83+
EXPECT_FALSE(c.mapGetBool("mixed_key", nullptr));
84+
EXPECT_FALSE(c.mapGetFloat("mixed_key", nullptr));
85+
QString string_value;
86+
EXPECT_TRUE(c.mapGetString("mixed_key", &string_value));
87+
EXPECT_EQ(string_value, "123abc");
88+
}
89+
7990
int main(int argc, char ** argv)
8091
{
8192
testing::InitGoogleTest(&argc, argv);

0 commit comments

Comments
 (0)