Skip to content

Commit 56a3e84

Browse files
committed
Fix incorrectly assigning memory to rktp_share_acknowledge even if AcquiredRecordsArrayCnt is 0
1 parent 364c5a7 commit 56a3e84

File tree

1 file changed

+18
-16
lines changed

1 file changed

+18
-16
lines changed

src/rdkafka_fetcher.c

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -985,22 +985,24 @@ static rd_kafka_resp_err_t rd_kafka_share_fetch_reply_handle_partition(
985985
rktp->rktp_share_acknowledge_count, AcquiredRecordsArrayCnt);
986986
rd_dassert(rktp->rktp_share_acknowledge_count == 0);
987987
rd_dassert(rktp->rktp_share_acknowledge == NULL);
988-
rktp->rktp_share_acknowledge_count = AcquiredRecordsArrayCnt;
989-
rktp->rktp_share_acknowledge = rd_calloc(AcquiredRecordsArrayCnt,
990-
sizeof(*rktp->rktp_share_acknowledge));
991-
for (i = 0; i < AcquiredRecordsArrayCnt; i++) {
992-
rd_kafka_buf_read_i64(rkbuf, &FirstOffset); // FirstOffset
993-
rd_kafka_buf_read_i64(rkbuf, &LastOffset); // LastOffset
994-
rd_kafka_buf_read_i16(rkbuf, &DeliveryCount); // DeliveryCount
995-
rd_kafka_buf_skip_tags(rkbuf); // AcquiredRecords tags
996-
rd_rkb_dbg(rkb, FETCH, "SHAREFETCH",
997-
"%.*s [%" PRId32 "]: Acquired Records from offset %" PRId64
998-
" to %" PRId64 ", DeliveryCount %" PRId16,
999-
RD_KAFKAP_STR_PR(topic), PartitionId,
1000-
FirstOffset, LastOffset, DeliveryCount);
1001-
rktp->rktp_share_acknowledge[i].first_offset = FirstOffset;
1002-
rktp->rktp_share_acknowledge[i].last_offset = LastOffset;
1003-
rktp->rktp_share_acknowledge[i].delivery_count = DeliveryCount;
988+
if(AcquiredRecordsArrayCnt > 0) {
989+
rktp->rktp_share_acknowledge_count = AcquiredRecordsArrayCnt;
990+
rktp->rktp_share_acknowledge = rd_calloc(AcquiredRecordsArrayCnt,
991+
sizeof(*rktp->rktp_share_acknowledge));
992+
for (i = 0; i < AcquiredRecordsArrayCnt; i++) {
993+
rd_kafka_buf_read_i64(rkbuf, &FirstOffset); // FirstOffset
994+
rd_kafka_buf_read_i64(rkbuf, &LastOffset); // LastOffset
995+
rd_kafka_buf_read_i16(rkbuf, &DeliveryCount); // DeliveryCount
996+
rd_kafka_buf_skip_tags(rkbuf); // AcquiredRecords tags
997+
rd_rkb_dbg(rkb, FETCH, "SHAREFETCH",
998+
"%.*s [%" PRId32 "]: Acquired Records from offset %" PRId64
999+
" to %" PRId64 ", DeliveryCount %" PRId16,
1000+
RD_KAFKAP_STR_PR(topic), PartitionId,
1001+
FirstOffset, LastOffset, DeliveryCount);
1002+
rktp->rktp_share_acknowledge[i].first_offset = FirstOffset;
1003+
rktp->rktp_share_acknowledge[i].last_offset = LastOffset;
1004+
rktp->rktp_share_acknowledge[i].delivery_count = DeliveryCount;
1005+
}
10041006
}
10051007

10061008
rd_kafka_buf_skip_tags(rkbuf); // Partition tags

0 commit comments

Comments
 (0)