Skip to content

Commit fabd65b

Browse files
committed
Length of size limited string is not checked
https://github.com/ros2/rclcpp/issues/1827 Signed-off-by: Tomoya Fujita <[email protected]>
1 parent 9290736 commit fabd65b

File tree

5 files changed

+49
-1
lines changed

5 files changed

+49
-1
lines changed

prover_interfaces/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,14 @@ find_package(rosidl_default_generators REQUIRED)
1212
# further dependencies manually.
1313
# find_package(<dependency> REQUIRED)
1414

15+
set(msg_files
16+
"msg/StringLengthTest.msg"
17+
)
1518
set(srv_files
1619
"srv/Huge.srv"
1720
)
1821
rosidl_generate_interfaces(${PROJECT_NAME}
22+
${msg_files}
1923
${srv_files}
2024
ADD_LINTER_TESTS
2125
)
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
string<=10 size_limited_string

prover_rclcpp/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ find_package(rcutils)
3737
find_package(rmw REQUIRED)
3838
find_package(std_srvs REQUIRED)
3939
find_package(std_msgs REQUIRED)
40+
find_package(prover_interfaces REQUIRED)
4041
find_package(example_interfaces REQUIRED)
4142

4243
function(custom_executable target)
@@ -45,6 +46,7 @@ function(custom_executable target)
4546
"rclcpp"
4647
"std_srvs"
4748
"std_msgs"
49+
"prover_interfaces"
4850
"lifecycle_msgs"
4951
"rclcpp_lifecycle"
5052
"example_interfaces")
@@ -82,6 +84,7 @@ custom_executable(rclcpp_1746)
8284
custom_executable(rclcpp_1766)
8385
custom_executable(rclcpp_1778)
8486
custom_executable(rclcpp_1785)
87+
custom_executable(rclcpp_1827)
8588

8689
custom_executable(rmw_fastrtps_554)
8790
custom_executable(rmw_fastrtps_555)

prover_rclcpp/package.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
<build_depend>rmw_implementation_cmake</build_depend>
2323
<build_depend>std_msgs</build_depend>
2424
<build_depend>std_srvs</build_depend>
25+
<build_depend>prover_interfaces</build_depend>
2526
<build_depend>example_interfaces</build_depend>
2627

2728
<exec_depend>lifecycle_msgs</exec_depend>
@@ -32,7 +33,8 @@
3233
<exec_depend>rmw</exec_depend>
3334
<exec_depend>std_msgs</exec_depend>
3435
<exec_depend>std_srvs</exec_depend>
35-
<build_depend>example_interfaces</build_depend>
36+
<exec_depend>prover_interfaces</exec_depend>
37+
<exec_depend>example_interfaces</exec_depend>
3638

3739
<test_depend>ament_cmake_pytest</test_depend>
3840
<test_depend>ament_lint_auto</test_depend>

prover_rclcpp/src/rclcpp_1827.cpp

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
#include <chrono>
2+
#include <memory>
3+
4+
using namespace std::chrono_literals;
5+
6+
#include "rclcpp/rclcpp.hpp"
7+
#include "prover_interfaces/msg/string_length_test.hpp"
8+
9+
class TestPublisher : public rclcpp::Node
10+
{
11+
public:
12+
TestPublisher()
13+
: Node("string_length_test_publisher")
14+
{
15+
publisher_ = this->create_publisher<prover_interfaces::msg::StringLengthTest>("oversized", 10);
16+
timer_ = this->create_wall_timer(
17+
1s, std::bind(&TestPublisher::timer_callback, this)); // 1kHz
18+
}
19+
20+
private:
21+
void timer_callback()
22+
{
23+
auto message = prover_interfaces::msg::StringLengthTest();
24+
message.size_limited_string.resize(11, 'x');
25+
publisher_->publish(message);
26+
}
27+
rclcpp::TimerBase::SharedPtr timer_;
28+
rclcpp::Publisher<prover_interfaces::msg::StringLengthTest>::SharedPtr publisher_;
29+
};
30+
31+
int main(int argc, char **argv)
32+
{
33+
rclcpp::init(argc, argv);
34+
std::shared_ptr<TestPublisher> pub = std::make_shared<TestPublisher>();
35+
rclcpp::spin(pub);
36+
rclcpp::shutdown();
37+
return 0;
38+
}

0 commit comments

Comments
 (0)