فهرست منبع

Add assertions and casts to implicit integer demotions.

Resolves Visual Studio warnings about data loss when implicitly
converting integers to smaller sizes.
Jason Valenzuela 5 سال پیش
والد
کامیت
0c70f249c3
1فایلهای تغییر یافته به همراه4 افزوده شده و 2 حذف شده
  1. 4 2
      source/src/cip/cipepath.c

+ 4 - 2
source/src/cip/cipepath.c

@@ -307,11 +307,13 @@ void CipEpathSetLogicalValue(const CipDword logical_value,
                              CipMessageRouterResponse *const message) {
   switch(logical_format) {
     case kLogicalSegmentLogicalFormatEightBit:
-      AddSintToMessage(logical_value, &message->message);
+      OPENER_ASSERT( (logical_value <= UINT8_MAX) ); /* Sanity check before casting to a smaller integer. */
+      AddSintToMessage( (EipUint8)logical_value, &message->message );
       break;
     case kLogicalSegmentLogicalFormatSixteenBit:
       MoveMessageNOctets(1, &message->message); /* Needed for padding */
-      AddIntToMessage(logical_value, &message->message);
+      OPENER_ASSERT( (logical_value <= UINT16_MAX) ); /* Sanity check before casting to a smaller integer. */
+      AddIntToMessage( (EipUint16)logical_value, &message->message );
       break;
     case kLogicalSegmentLogicalFormatThirtyTwoBit:
       MoveMessageNOctets(1, &message->message); /* Needed for padding */