Skip to content

Commit 39698fd

Browse files
committed
fix Property Exchange chunk validation (0 is a valid 'number_of_chunks' value)
1 parent fc0a6b7 commit 39698fd

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

src/capability_inquiry.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ bool property_exchange::property_data_message_view::validate(const sysex7& sx)
229229
const auto cur_chunk = sx.make_uint14(field_offsets::this_chunk + header_bytes);
230230
const auto chunk_bytes = sx.make_uint14(field_offsets::chunk_size + header_bytes);
231231

232-
if (cur_chunk > num_chunks)
232+
if (num_chunks && (cur_chunk > num_chunks))
233233
return false;
234234

235235
if (header_bytes && (cur_chunk > 1))
@@ -258,8 +258,8 @@ message property_exchange::make_property_data_message(subtype_t subtype,
258258
auto result =
259259
message::make_with_payload_size(9 + header.size + chunk.size, subtype, source_muid, destination_muid, device_id);
260260

261-
assert((number_of_chunks && number_of_this_chunk) || ((chunk.data == nullptr) && (chunk.size == 0)));
262-
assert(number_of_this_chunk <= number_of_chunks);
261+
assert(number_of_this_chunk || ((chunk.data == nullptr) && (chunk.size == 0)));
262+
assert((number_of_chunks == 0) || (number_of_this_chunk <= number_of_chunks));
263263

264264
assert(!header.size || header.data);
265265
assert(!chunk.size || chunk.data);

tests/ci_property_exchange_tests.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -902,7 +902,7 @@ TEST_F(ci_property_exchange, get_property_data_reply)
902902

903903
auto sx = midi::ci::make_get_property_data_reply(0x1133577,
904904
0xFFAABB0,
905-
256,
905+
0,
906906
128,
907907
midi::ci::property_exchange::chunk{
908908
chunk,
@@ -927,7 +927,7 @@ TEST_F(ci_property_exchange, get_property_data_reply)
927927
EXPECT_EQ(0u, m.header_size());
928928
EXPECT_EQ(m.header_end(), m.header_begin() + m.header_size());
929929

930-
EXPECT_EQ(256u, m.number_of_chunks());
930+
EXPECT_EQ(0u, m.number_of_chunks());
931931
EXPECT_EQ(128u, m.number_of_this_chunk());
932932

933933
EXPECT_EQ(chunk.size(), m.chunk_size());

0 commit comments

Comments
 (0)