@@ -120,24 +120,25 @@ int build_participant_xml(
120120 return ret ;
121121}
122122
123- int generate_service_topics (
123+ bool generate_service_topics (
124124 const char * service_name ,
125125 char * request_topic ,
126126 char * reply_topic ,
127127 size_t buffer_size )
128128{
129- snprintf (
129+ int ret_req = snprintf (
130130 request_topic , buffer_size , "%s%s%s" , ros_request_prefix ,
131131 service_name , ros_request_subfix );
132132
133- snprintf (
133+ int ret_rep = snprintf (
134134 reply_topic , buffer_size , "%s%s%s" , ros_reply_prefix ,
135135 service_name , ros_reply_subfix );
136136
137- return 1 ;
137+ return (ret_req >= 0 ) && (ret_req < (int )buffer_size ) && (ret_rep >= 0 ) &&
138+ (ret_rep < (int )buffer_size );
138139}
139140
140- int generate_service_types (
141+ bool generate_service_types (
141142 const service_type_support_callbacks_t * members ,
142143 char * request_type ,
143144 char * reply_type ,
@@ -151,10 +152,11 @@ int generate_service_types(
151152 const message_type_support_callbacks_t * res_callbacks =
152153 (const message_type_support_callbacks_t * )res_members -> data ;
153154
154- generate_type_name (req_callbacks , request_type , buffer_size );
155- generate_type_name (res_callbacks , reply_type , buffer_size );
155+ bool ret = true;
156+ ret &= generate_type_name (req_callbacks , request_type , buffer_size );
157+ ret &= generate_type_name (res_callbacks , reply_type , buffer_size );
156158
157- return 0 ;
159+ return ret ;
158160}
159161
160162int build_service_xml (
@@ -287,21 +289,18 @@ int generate_name(
287289 return ret ;
288290}
289291
290- size_t generate_type_name (
292+ bool generate_type_name (
291293 const message_type_support_callbacks_t * members ,
292294 char type_name [],
293295 size_t buffer_size )
294296{
295297 static const char * sep = "::" ;
296298 static const char * protocol = "dds" ;
297299 static const char * suffix = "_" ;
298- size_t full_name_size = strlen (protocol ) + strlen (suffix ) + strlen (sep ) + strlen (
299- members -> message_name_ ) + strlen (suffix ) +
300- ((NULL != members -> message_namespace_ ) ? strlen (members -> message_namespace_ ) : 0 ) + 1 ;
301300
302301 type_name [0 ] = 0 ;
303302
304- snprintf (
303+ int ret = snprintf (
305304 type_name , buffer_size ,
306305 "%s%s%s%s%s%s%s" ,
307306 (NULL != members -> message_namespace_ ) ? members -> message_namespace_ : "" ,
@@ -313,10 +312,10 @@ size_t generate_type_name(
313312 suffix
314313 );
315314
316- return full_name_size ;
315+ return ( ret >= 0 ) && ( ret < ( int ) buffer_size ) ;
317316}
318317
319- int generate_topic_name (
318+ bool generate_topic_name (
320319 const char * topic_name ,
321320 char * full_topic_name ,
322321 size_t full_topic_name_size )
@@ -327,10 +326,8 @@ int generate_topic_name(
327326 "%s%s" ,
328327 ros_topic_prefix ,
329328 topic_name );
330- if ((ret < 0 ) && (ret >= (int )full_topic_name_size )) {
331- return 0 ;
332- }
333- return ret ;
329+
330+ return (ret >= 0 ) && (ret < (int )full_topic_name_size );
334331}
335332
336333int build_topic_xml (
@@ -352,7 +349,7 @@ int build_topic_xml(
352349 static char type_name_buffer [RMW_UXRCE_TYPE_NAME_MAX_LENGTH ];
353350
354351 if (RMW_UXRCE_TOPIC_NAME_MAX_LENGTH >= strlen (topic_name ) &&
355- 0 != generate_type_name (members , type_name_buffer , sizeof (type_name_buffer )))
352+ generate_type_name (members , type_name_buffer , sizeof (type_name_buffer )))
356353 {
357354 char full_topic_name [RMW_UXRCE_TOPIC_NAME_MAX_LENGTH + 1 + sizeof (ros_topic_prefix )];
358355
@@ -390,7 +387,7 @@ int build_xml(
390387 int ret = 0 ;
391388 static char type_name_buffer [RMW_UXRCE_TYPE_NAME_MAX_LENGTH ];
392389
393- if (0 != generate_type_name (members , type_name_buffer , sizeof (type_name_buffer ))) {
390+ if (generate_type_name (members , type_name_buffer , sizeof (type_name_buffer ))) {
394391 char full_topic_name [RMW_UXRCE_TOPIC_NAME_MAX_LENGTH + 1 + sizeof (ros_topic_prefix )];
395392 full_topic_name [0 ] = '\0' ;
396393
0 commit comments