Skip to content

Commit 48a8776

Browse files
mergify[bot]MiguelCompanyJesusPoderoso
authored
Be less strict with parameter lengths (#5225) (#5247)
* Be less strict with parameter lengths (#5225) * Refs #21537. Add regression test for interoperability issue. Signed-off-by: Miguel Company <[email protected]> * Refs #21537. Add regression test for big parameters. Signed-off-by: Miguel Company <[email protected]> * Refs #21537. Fix builtin deserialization length checks. Signed-off-by: Miguel Company <[email protected]> * Refs #21537. Special cases in test. Signed-off-by: Miguel Company <[email protected]> * Refs #21537. Extend test to full non-custom range. Signed-off-by: Miguel Company <[email protected]> * Refs #21537. Extend parameter size to 64K. Signed-off-by: Miguel Company <[email protected]> * Refs #21537. Uncrustify. Signed-off-by: Miguel Company <[email protected]> * Refs #21638. Fix windows warning. Signed-off-by: Miguel Company <[email protected]> --------- Signed-off-by: Miguel Company <[email protected]> (cherry picked from commit 7b111f9) # Conflicts: # src/cpp/fastdds/core/policy/ParameterSerializer.hpp * Refs #21638: Fix conflicts Signed-off-by: JesusPoderoso <[email protected]> * Fix unit tests build Signed-off-by: Miguel Company <[email protected]> --------- Signed-off-by: JesusPoderoso <[email protected]> Signed-off-by: Miguel Company <[email protected]> Co-authored-by: Miguel Company <[email protected]> Co-authored-by: JesusPoderoso <[email protected]>
1 parent 28e2ce8 commit 48a8776

File tree

3 files changed

+541
-33
lines changed

3 files changed

+541
-33
lines changed

src/cpp/fastdds/core/policy/ParameterSerializer.hpp

+17-17
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ inline bool ParameterSerializer<ParameterLocator_t>::read_content_from_cdr_messa
251251
fastrtps::rtps::CDRMessage_t* cdr_message,
252252
const uint16_t parameter_length)
253253
{
254-
if (parameter_length != PARAMETER_LOCATOR_LENGTH)
254+
if (parameter_length < PARAMETER_LOCATOR_LENGTH)
255255
{
256256
return false;
257257
}
@@ -273,7 +273,7 @@ inline bool ParameterSerializer<ParameterKey_t>::read_content_from_cdr_message(
273273
fastrtps::rtps::CDRMessage_t* cdr_message,
274274
const uint16_t parameter_length)
275275
{
276-
if (parameter_length != PARAMETER_KEY_HASH_LENGTH)
276+
if (parameter_length < PARAMETER_KEY_HASH_LENGTH)
277277
{
278278
return false;
279279
}
@@ -343,7 +343,7 @@ inline bool ParameterSerializer<ParameterPort_t>::read_content_from_cdr_message(
343343
fastrtps::rtps::CDRMessage_t* cdr_message,
344344
const uint16_t parameter_length)
345345
{
346-
if (parameter_length != PARAMETER_PORT_LENGTH)
346+
if (parameter_length < PARAMETER_PORT_LENGTH)
347347
{
348348
return false;
349349
}
@@ -367,7 +367,7 @@ inline bool ParameterSerializer<ParameterGuid_t>::read_content_from_cdr_message(
367367
fastrtps::rtps::CDRMessage_t* cdr_message,
368368
const uint16_t parameter_length)
369369
{
370-
if (parameter_length != PARAMETER_GUID_LENGTH)
370+
if (parameter_length < PARAMETER_GUID_LENGTH)
371371
{
372372
return false;
373373
}
@@ -394,7 +394,7 @@ inline bool ParameterSerializer<ParameterProtocolVersion_t>::read_content_from_c
394394
fastrtps::rtps::CDRMessage_t* cdr_message,
395395
const uint16_t parameter_length)
396396
{
397-
if (parameter_length != PARAMETER_PROTOCOL_LENGTH)
397+
if (parameter_length < PARAMETER_PROTOCOL_LENGTH)
398398
{
399399
return false;
400400
}
@@ -422,7 +422,7 @@ inline bool ParameterSerializer<ParameterVendorId_t>::read_content_from_cdr_mess
422422
fastrtps::rtps::CDRMessage_t* cdr_message,
423423
const uint16_t parameter_length)
424424
{
425-
if (parameter_length != PARAMETER_VENDOR_LENGTH)
425+
if (parameter_length < PARAMETER_VENDOR_LENGTH)
426426
{
427427
return false;
428428
}
@@ -447,7 +447,7 @@ inline bool ParameterSerializer<ParameterIP4Address_t>::read_content_from_cdr_me
447447
fastrtps::rtps::CDRMessage_t* cdr_message,
448448
const uint16_t parameter_length)
449449
{
450-
if (parameter_length != PARAMETER_IP4_LENGTH)
450+
if (parameter_length < PARAMETER_IP4_LENGTH)
451451
{
452452
return false;
453453
}
@@ -473,7 +473,7 @@ inline bool ParameterSerializer<ParameterBool_t>::read_content_from_cdr_message(
473473
fastrtps::rtps::CDRMessage_t* cdr_message,
474474
const uint16_t parameter_length)
475475
{
476-
if (parameter_length != PARAMETER_BOOL_LENGTH)
476+
if (parameter_length < PARAMETER_BOOL_LENGTH)
477477
{
478478
return false;
479479
}
@@ -501,7 +501,7 @@ inline bool ParameterSerializer<ParameterStatusInfo_t>::read_content_from_cdr_me
501501
fastrtps::rtps::CDRMessage_t* cdr_message,
502502
const uint16_t parameter_length)
503503
{
504-
if (parameter_length != PARAMETER_STATUS_INFO_LENGTH)
504+
if (parameter_length < PARAMETER_STATUS_INFO_LENGTH)
505505
{
506506
return false;
507507
}
@@ -530,7 +530,7 @@ inline bool ParameterSerializer<ParameterCount_t>::read_content_from_cdr_message
530530
fastrtps::rtps::CDRMessage_t* cdr_message,
531531
const uint16_t parameter_length)
532532
{
533-
if (parameter_length != PARAMETER_COUNT_LENGTH)
533+
if (parameter_length < PARAMETER_COUNT_LENGTH)
534534
{
535535
return false;
536536
}
@@ -552,7 +552,7 @@ inline bool ParameterSerializer<ParameterEntityId_t>::read_content_from_cdr_mess
552552
fastrtps::rtps::CDRMessage_t* cdr_message,
553553
const uint16_t parameter_length)
554554
{
555-
if (parameter_length != PARAMETER_ENTITYID_LENGTH)
555+
if (parameter_length < PARAMETER_ENTITYID_LENGTH)
556556
{
557557
return false;
558558
}
@@ -576,7 +576,7 @@ inline bool ParameterSerializer<ParameterTime_t>::read_content_from_cdr_message(
576576
fastrtps::rtps::CDRMessage_t* cdr_message,
577577
const uint16_t parameter_length)
578578
{
579-
if (parameter_length != PARAMETER_TIME_LENGTH)
579+
if (parameter_length < PARAMETER_TIME_LENGTH)
580580
{
581581
return false;
582582
}
@@ -604,7 +604,7 @@ inline bool ParameterSerializer<ParameterBuiltinEndpointSet_t>::read_content_fro
604604
fastrtps::rtps::CDRMessage_t* cdr_message,
605605
const uint16_t parameter_length)
606606
{
607-
if (parameter_length != PARAMETER_BUILTINENDPOINTSET_LENGTH)
607+
if (parameter_length < PARAMETER_BUILTINENDPOINTSET_LENGTH)
608608
{
609609
return false;
610610
}
@@ -626,7 +626,7 @@ inline bool ParameterSerializer<ParameterNetworkConfigSet_t>::read_content_from_
626626
fastrtps::rtps::CDRMessage_t* cdr_message,
627627
const uint16_t parameter_length)
628628
{
629-
if (parameter_length != PARAMETER_NETWORKCONFIGSET_LENGTH)
629+
if (parameter_length < PARAMETER_NETWORKCONFIGSET_LENGTH)
630630
{
631631
return false;
632632
}
@@ -783,7 +783,7 @@ inline bool ParameterSerializer<ParameterSampleIdentity_t>::read_content_from_cd
783783
fastrtps::rtps::CDRMessage_t* cdr_message,
784784
const uint16_t parameter_length)
785785
{
786-
if (parameter_length != PARAMETER_SAMPLEIDENTITY_LENGTH)
786+
if (parameter_length < PARAMETER_SAMPLEIDENTITY_LENGTH)
787787
{
788788
return false;
789789
}
@@ -1061,7 +1061,7 @@ inline bool ParameterSerializer<ParameterParticipantSecurityInfo_t>::read_conten
10611061
fastrtps::rtps::CDRMessage_t* cdr_message,
10621062
const uint16_t parameter_length)
10631063
{
1064-
if (parameter_length != PARAMETER_PARTICIPANT_SECURITY_INFO_LENGTH)
1064+
if (parameter_length < PARAMETER_PARTICIPANT_SECURITY_INFO_LENGTH)
10651065
{
10661066
return false;
10671067
}
@@ -1087,7 +1087,7 @@ inline bool ParameterSerializer<ParameterEndpointSecurityInfo_t>::read_content_f
10871087
fastrtps::rtps::CDRMessage_t* cdr_message,
10881088
const uint16_t parameter_length)
10891089
{
1090-
if (parameter_length != PARAMETER_ENDPOINT_SECURITY_INFO_LENGTH)
1090+
if (parameter_length < PARAMETER_ENDPOINT_SECURITY_INFO_LENGTH)
10911091
{
10921092
return false;
10931093
}

src/cpp/fastdds/core/policy/QosPoliciesSerializer.hpp

+16-16
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ inline bool QosPoliciesSerializer<DurabilityQosPolicy>::read_content_from_cdr_me
9797
fastrtps::rtps::CDRMessage_t* cdr_message,
9898
const uint16_t parameter_length)
9999
{
100-
if (parameter_length != PARAMETER_KIND_LENGTH)
100+
if (parameter_length < PARAMETER_KIND_LENGTH)
101101
{
102102
return false;
103103
}
@@ -126,7 +126,7 @@ inline bool QosPoliciesSerializer<DeadlineQosPolicy>::read_content_from_cdr_mess
126126
fastrtps::rtps::CDRMessage_t* cdr_message,
127127
const uint16_t parameter_length)
128128
{
129-
if (parameter_length != PARAMETER_TIME_LENGTH)
129+
if (parameter_length < PARAMETER_TIME_LENGTH)
130130
{
131131
return false;
132132
}
@@ -155,7 +155,7 @@ inline bool QosPoliciesSerializer<LatencyBudgetQosPolicy>::read_content_from_cdr
155155
fastrtps::rtps::CDRMessage_t* cdr_message,
156156
const uint16_t parameter_length)
157157
{
158-
if (parameter_length != PARAMETER_TIME_LENGTH)
158+
if (parameter_length < PARAMETER_TIME_LENGTH)
159159
{
160160
return false;
161161
}
@@ -190,7 +190,7 @@ inline bool QosPoliciesSerializer<LivelinessQosPolicy>::read_content_from_cdr_me
190190
fastrtps::rtps::CDRMessage_t* cdr_message,
191191
const uint16_t parameter_length)
192192
{
193-
if (parameter_length != PARAMETER_KIND_LENGTH + PARAMETER_TIME_LENGTH)
193+
if (parameter_length < PARAMETER_KIND_LENGTH + PARAMETER_TIME_LENGTH)
194194
{
195195
return false;
196196
}
@@ -229,7 +229,7 @@ inline bool QosPoliciesSerializer<ReliabilityQosPolicy>::read_content_from_cdr_m
229229
fastrtps::rtps::CDRMessage_t* cdr_message,
230230
const uint16_t parameter_length)
231231
{
232-
if (parameter_length != PARAMETER_KIND_LENGTH + PARAMETER_TIME_LENGTH)
232+
if (parameter_length < PARAMETER_KIND_LENGTH + PARAMETER_TIME_LENGTH)
233233
{
234234
return false;
235235
}
@@ -263,7 +263,7 @@ inline bool QosPoliciesSerializer<OwnershipQosPolicy>::read_content_from_cdr_mes
263263
fastrtps::rtps::CDRMessage_t* cdr_message,
264264
const uint16_t parameter_length)
265265
{
266-
if (parameter_length != PARAMETER_KIND_LENGTH)
266+
if (parameter_length < PARAMETER_KIND_LENGTH)
267267
{
268268
return false;
269269
}
@@ -292,7 +292,7 @@ inline bool QosPoliciesSerializer<DestinationOrderQosPolicy>::read_content_from_
292292
fastrtps::rtps::CDRMessage_t* cdr_message,
293293
const uint16_t parameter_length)
294294
{
295-
if (parameter_length != PARAMETER_KIND_LENGTH)
295+
if (parameter_length < PARAMETER_KIND_LENGTH)
296296
{
297297
return false;
298298
}
@@ -323,7 +323,7 @@ inline bool QosPoliciesSerializer<ResourceLimitsQosPolicy>::read_content_from_cd
323323
fastrtps::rtps::CDRMessage_t* cdr_message,
324324
const uint16_t parameter_length)
325325
{
326-
if (parameter_length != 12)
326+
if (parameter_length < 12)
327327
{
328328
return false;
329329
}
@@ -357,7 +357,7 @@ inline bool QosPoliciesSerializer<TimeBasedFilterQosPolicy>::read_content_from_c
357357
fastrtps::rtps::CDRMessage_t* cdr_message,
358358
const uint16_t parameter_length)
359359
{
360-
if (parameter_length != PARAMETER_TIME_LENGTH)
360+
if (parameter_length < PARAMETER_TIME_LENGTH)
361361
{
362362
return false;
363363
}
@@ -397,7 +397,7 @@ inline bool QosPoliciesSerializer<PresentationQosPolicy>::read_content_from_cdr_
397397
fastrtps::rtps::CDRMessage_t* cdr_message,
398398
const uint16_t parameter_length)
399399
{
400-
if (parameter_length != PARAMETER_PRESENTATION_LENGTH)
400+
if (parameter_length < PARAMETER_PRESENTATION_LENGTH)
401401
{
402402
return false;
403403
}
@@ -516,7 +516,7 @@ inline bool QosPoliciesSerializer<HistoryQosPolicy>::read_content_from_cdr_messa
516516
fastrtps::rtps::CDRMessage_t* cdr_message,
517517
const uint16_t parameter_length)
518518
{
519-
if (parameter_length != PARAMETER_KIND_LENGTH + 4)
519+
if (parameter_length < PARAMETER_KIND_LENGTH + 4)
520520
{
521521
return false;
522522
}
@@ -553,7 +553,7 @@ inline bool QosPoliciesSerializer<DurabilityServiceQosPolicy>::read_content_from
553553
fastrtps::rtps::CDRMessage_t* cdr_message,
554554
const uint16_t parameter_length)
555555
{
556-
if (parameter_length != PARAMETER_TIME_LENGTH + PARAMETER_KIND_LENGTH + 16)
556+
if (parameter_length < PARAMETER_TIME_LENGTH + PARAMETER_KIND_LENGTH + 16)
557557
{
558558
return false;
559559
}
@@ -588,7 +588,7 @@ inline bool QosPoliciesSerializer<LifespanQosPolicy>::read_content_from_cdr_mess
588588
fastrtps::rtps::CDRMessage_t* cdr_message,
589589
const uint16_t parameter_length)
590590
{
591-
if (parameter_length != PARAMETER_TIME_LENGTH)
591+
if (parameter_length < PARAMETER_TIME_LENGTH)
592592
{
593593
return false;
594594
}
@@ -615,7 +615,7 @@ inline bool QosPoliciesSerializer<OwnershipStrengthQosPolicy>::read_content_from
615615
fastrtps::rtps::CDRMessage_t* cdr_message,
616616
const uint16_t parameter_length)
617617
{
618-
if (parameter_length != 4)
618+
if (parameter_length < 4)
619619
{
620620
return false;
621621
}
@@ -638,7 +638,7 @@ inline bool QosPoliciesSerializer<TransportPriorityQosPolicy>::read_content_from
638638
fastrtps::rtps::CDRMessage_t* cdr_message,
639639
const uint16_t parameter_length)
640640
{
641-
if (parameter_length != 4)
641+
if (parameter_length < 4)
642642
{
643643
return false;
644644
}
@@ -800,7 +800,7 @@ inline bool QosPoliciesSerializer<DisablePositiveACKsQosPolicy>::read_content_fr
800800
fastrtps::rtps::CDRMessage_t* cdr_message,
801801
const uint16_t parameter_length)
802802
{
803-
if (parameter_length != PARAMETER_BOOL_LENGTH)
803+
if (parameter_length < PARAMETER_BOOL_LENGTH)
804804
{
805805
return false;
806806
}

0 commit comments

Comments
 (0)