You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Such a key expression (**) doesn't query only the admin space, but ALL Zenoh key space, that includes both user space and admin space.
Therefore, ALL the queryables declared by the bridge are queried, including the ones mapping to ROS 2 Services and Actions. But as your query has not body payload, the ROS 2 Service (probably related to ROS parameters in your case) fails to deserialize the payload and crashes.
In general, it's not a good idea to query on ** as it could trigger some queryables that have some expectation wrt. the query.
The zenoh-bridge-ros2dds admin space is on @ros2/**. You should query it as such:
curl http://127.0.0.1:8000/@ros2/\*\*
In the bridge, I will add a safety check in queryables for Services and Action avoiding to forward to ROS an empty request.
That would at least prevent crashes by accident of a query without payload.
Still, nothing can prevent a malformed payload to make a ROS Node to crash, except defensive code inside ROS itself.
That makes sense. I also found this by accident.
We indeed can't prevent wrong requests to ROS Node and crash it.
It's fine for me to at least add the safety check on empty requests, since users might run this mistakenly.
Describe the bug
While running ROS 2 node, using curl to query admin space will cause the node to crash.
To reproduce
curl http://127.0.0.1:8000/\*\*
System info
Platform: Ubuntu 22.04
ROS version: Humble
Bridge version: main branch
The text was updated successfully, but these errors were encountered: