Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package aws-c-mqtt for openSUSE:Factory checked in at 2026-08-14 22:06:17 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/aws-c-mqtt (Old) and /work/SRC/openSUSE:Factory/.aws-c-mqtt.new.1258 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "aws-c-mqtt" Fri Aug 14 22:06:17 2026 rev:19 rq:1371010 version:0.16.1 Changes: -------- --- /work/SRC/openSUSE:Factory/aws-c-mqtt/aws-c-mqtt.changes 2026-05-26 16:35:13.210946473 +0200 +++ /work/SRC/openSUSE:Factory/.aws-c-mqtt.new.1258/aws-c-mqtt.changes 2026-08-14 22:06:37.808251363 +0200 @@ -1,0 +2,9 @@ +Tue Aug 4 11:21:19 UTC 2026 - John Paul Adrian Glaubitz <[email protected]> + +- Update to version 0.16.1 + * Support s2n-tls on macOS by @sfod in (#427) + * Regression Labeler Fix by @azkrishpy in (#429) + * Use latest as aws-crt-builder version by @sfod in (#430) + * Handle excess reason codes in SUBACK by @sfod in (#431) + +------------------------------------------------------------------- Old: ---- v0.16.0.tar.gz New: ---- v0.16.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ aws-c-mqtt.spec ++++++ --- /var/tmp/diff_new_pack.0V4bH6/_old 2026-08-14 22:06:38.725284096 +0200 +++ /var/tmp/diff_new_pack.0V4bH6/_new 2026-08-14 22:06:38.727284167 +0200 @@ -18,7 +18,7 @@ %global library_version 1_0_0 Name: aws-c-mqtt -Version: 0.16.0 +Version: 0.16.1 Release: 0 Summary: AWS C99 implementation of the MQTT 3.1.1 specification License: Apache-2.0 ++++++ v0.16.0.tar.gz -> v0.16.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-mqtt-0.16.0/.github/workflows/ci.yml new/aws-c-mqtt-0.16.1/.github/workflows/ci.yml --- old/aws-c-mqtt-0.16.0/.github/workflows/ci.yml 2026-05-18 20:49:17.000000000 +0200 +++ new/aws-c-mqtt-0.16.1/.github/workflows/ci.yml 2026-07-30 22:01:05.000000000 +0200 @@ -6,7 +6,7 @@ - 'main' env: - BUILDER_VERSION: v0.9.92 + BUILDER_VERSION: latest BUILDER_SOURCE: releases BUILDER_HOST: https://d19elf31gohf1l.cloudfront.net PACKAGE_NAME: aws-c-mqtt @@ -184,7 +184,37 @@ run: | python3 -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder')" chmod a+x builder - ./builder build -p ${{ env.PACKAGE_NAME }} --cmake-extra=-DASSERT_LOCK_HELD=ON + ./builder build -p ${{ env.PACKAGE_NAME }} --cmake-extra=-DASSERT_LOCK_HELD=ON --cmake-extra=-DCMAKE_NO_SYSTEM_FROM_IMPORTED=ON + + macos-s2n: + runs-on: macos-14 # latest + env: + AWS_CRT_USE_NON_FIPS_TLS_13: 1 + steps: + - uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: ${{ env.CRT_CI_ROLE }} + aws-region: ${{ env.AWS_DEFAULT_REGION }} + - name: Build ${{ env.PACKAGE_NAME }} + consumers + run: | + python3 -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder')" + chmod a+x builder + ./builder build -p ${{ env.PACKAGE_NAME }} --cmake-extra=-DAWS_USE_APPLE_NETWORK_FRAMEWORK=${{ matrix.eventloop == 'dispatch_queue' && 'ON' || 'OFF' }} + + macos-x64-s2n: + runs-on: macos-14-large # latest + env: + AWS_CRT_USE_NON_FIPS_TLS_13: 1 + steps: + - uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: ${{ env.CRT_CI_ROLE }} + aws-region: ${{ env.AWS_DEFAULT_REGION }} + - name: Build ${{ env.PACKAGE_NAME }} + consumers + run: | + python3 -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder')" + chmod a+x builder + ./builder build -p ${{ env.PACKAGE_NAME }} --cmake-extra=-DASSERT_LOCK_HELD=ON --cmake-extra=-DCMAKE_NO_SYSTEM_FROM_IMPORTED=ON # Test downstream repos. # This should not be required because we can run into a chicken and egg problem if there is a change that needs some fix in a downstream repo. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-mqtt-0.16.0/.github/workflows/codecov.yml new/aws-c-mqtt-0.16.1/.github/workflows/codecov.yml --- old/aws-c-mqtt-0.16.0/.github/workflows/codecov.yml 2026-05-18 20:49:17.000000000 +0200 +++ new/aws-c-mqtt-0.16.1/.github/workflows/codecov.yml 2026-07-30 22:01:05.000000000 +0200 @@ -4,7 +4,7 @@ push: env: - BUILDER_VERSION: v0.9.74 + BUILDER_VERSION: latest BUILDER_SOURCE: releases BUILDER_HOST: https://d19elf31gohf1l.cloudfront.net PACKAGE_NAME: aws-c-mqtt diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-mqtt-0.16.0/.github/workflows/issue-regression-labeler.yml new/aws-c-mqtt-0.16.1/.github/workflows/issue-regression-labeler.yml --- old/aws-c-mqtt-0.16.0/.github/workflows/issue-regression-labeler.yml 2026-05-18 20:49:17.000000000 +0200 +++ new/aws-c-mqtt-0.16.1/.github/workflows/issue-regression-labeler.yml 2026-07-30 22:01:05.000000000 +0200 @@ -24,9 +24,12 @@ - name: Manage regression label env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + IS_REGRESSION: ${{ steps.check_regression.outputs.is_regression }} + ISSUE_NUMBER: ${{ github.event.issue.number }} + REPO: ${{ github.repository }} run: | - if [ "${{ steps.check_regression.outputs.is_regression }}" == "true" ]; then - gh issue edit ${{ github.event.issue.number }} --add-label "potential-regression" -R ${{ github.repository }} + if [ "$IS_REGRESSION" == "true" ]; then + gh issue edit "$ISSUE_NUMBER" --add-label "potential-regression" -R "$REPO" else - gh issue edit ${{ github.event.issue.number }} --remove-label "potential-regression" -R ${{ github.repository }} + gh issue edit "$ISSUE_NUMBER" --remove-label "potential-regression" -R "$REPO" fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-mqtt-0.16.0/source/v5/mqtt5_to_mqtt3_adapter.c new/aws-c-mqtt-0.16.1/source/v5/mqtt5_to_mqtt3_adapter.c --- old/aws-c-mqtt-0.16.0/source/v5/mqtt5_to_mqtt3_adapter.c 2026-05-18 20:49:17.000000000 +0200 +++ new/aws-c-mqtt-0.16.1/source/v5/mqtt5_to_mqtt3_adapter.c 2026-07-30 22:01:05.000000000 +0200 @@ -2093,12 +2093,11 @@ (*subscribe_op->on_multi_suback)( &adapter->base, subscribe_op->base.id, NULL, error_code, subscribe_op->on_multi_suback_user_data); } else { - AWS_VARIABLE_LENGTH_ARRAY( - struct aws_mqtt_topic_subscription, multi_sub_subscription_buf, suback->reason_code_count); - AWS_VARIABLE_LENGTH_ARRAY( - struct aws_mqtt_topic_subscription *, multi_sub_subscription_ptr_buf, suback->reason_code_count); - struct aws_mqtt_topic_subscription *subscription_ptr = - (struct aws_mqtt_topic_subscription *)multi_sub_subscription_buf; + struct aws_mqtt_topic_subscription *multi_sub_subscription_buf = aws_mem_calloc( + adapter->allocator, suback->reason_code_count, sizeof(struct aws_mqtt_topic_subscription)); + struct aws_mqtt_topic_subscription **multi_sub_subscription_ptr_buf = aws_mem_calloc( + adapter->allocator, suback->reason_code_count, sizeof(struct aws_mqtt_topic_subscription *)); + struct aws_mqtt_topic_subscription *subscription_ptr = multi_sub_subscription_buf; struct aws_array_list multi_sub_list; aws_array_list_init_static( @@ -2132,6 +2131,9 @@ &multi_sub_list, error_code, subscribe_op->on_multi_suback_user_data); + + aws_mem_release(adapter->allocator, multi_sub_subscription_buf); + aws_mem_release(adapter->allocator, multi_sub_subscription_ptr_buf); } } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-mqtt-0.16.0/tests/CMakeLists.txt new/aws-c-mqtt-0.16.1/tests/CMakeLists.txt --- old/aws-c-mqtt-0.16.0/tests/CMakeLists.txt 2026-05-18 20:49:17.000000000 +0200 +++ new/aws-c-mqtt-0.16.1/tests/CMakeLists.txt 2026-07-30 22:01:05.000000000 +0200 @@ -480,6 +480,7 @@ add_test_case(mqtt5to3_adapter_resubscribe_something) add_test_case(mqtt5to3_adapter_subscribe_single_null_suback) add_test_case(mqtt5to3_adapter_subscribe_multi_null_suback) +add_test_case(mqtt5to3_adapter_subscribe_multi_oversized_suback) add_test_case(mqtt5to3_adapter_operation_callbacks_after_shutdown) # Adapter Metrics Tests add_test_case(mqtt5to3_adapter_set_metrics_valid) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-mqtt-0.16.0/tests/v5/mqtt5_to_mqtt3_adapter_tests.c new/aws-c-mqtt-0.16.1/tests/v5/mqtt5_to_mqtt3_adapter_tests.c --- old/aws-c-mqtt-0.16.0/tests/v5/mqtt5_to_mqtt3_adapter_tests.c 2026-05-18 20:49:17.000000000 +0200 +++ new/aws-c-mqtt-0.16.1/tests/v5/mqtt5_to_mqtt3_adapter_tests.c 2026-07-30 22:01:05.000000000 +0200 @@ -3051,6 +3051,132 @@ AWS_TEST_CASE(mqtt5to3_adapter_subscribe_multi_null_suback, s_mqtt5to3_adapter_subscribe_multi_null_suback_fn) +#define AWS_MQTT5TO3_OVERSIZED_SUBACK_REASON_CODE_COUNT 200000 + +static int s_mqtt5_mock_server_send_packet_streaming( + struct aws_mqtt5_server_mock_connection_context *connection, + enum aws_mqtt5_packet_type packet_type, + void *packet) { + + if (aws_mqtt5_encoder_append_packet_encoding(&connection->encoder, packet_type, packet)) { + return AWS_OP_ERR; + } + + enum aws_mqtt5_encoding_result result = AWS_MQTT5_ER_OUT_OF_ROOM; + while (result == AWS_MQTT5_ER_OUT_OF_ROOM) { + struct aws_io_message *message = + aws_channel_acquire_message_from_pool(connection->slot->channel, AWS_IO_MESSAGE_APPLICATION_DATA, 4096); + if (message == NULL) { + return AWS_OP_ERR; + } + + result = aws_mqtt5_encoder_encode_to_buffer(&connection->encoder, &message->message_data); + if (result == AWS_MQTT5_ER_ERROR) { + aws_mem_release(message->allocator, message); + return AWS_OP_ERR; + } + + if (aws_channel_slot_send_message(connection->slot, message, AWS_CHANNEL_DIR_WRITE)) { + aws_mem_release(message->allocator, message); + return AWS_OP_ERR; + } + } + + return AWS_OP_SUCCESS; +} + +static int s_mqtt5_mock_server_handle_subscribe_suback_oversized( + void *packet, + struct aws_mqtt5_server_mock_connection_context *connection, + void *user_data) { + + (void)user_data; + + struct aws_mqtt5_packet_subscribe_view *subscribe_view = packet; + + size_t reason_code_count = AWS_MQTT5TO3_OVERSIZED_SUBACK_REASON_CODE_COUNT; + + enum aws_mqtt5_suback_reason_code *mqtt5_suback_codes = + aws_mem_calloc(connection->allocator, reason_code_count, sizeof(enum aws_mqtt5_suback_reason_code)); + for (size_t i = 0; i < reason_code_count; ++i) { + mqtt5_suback_codes[i] = AWS_MQTT5_SARC_GRANTED_QOS_1; + } + + struct aws_mqtt5_packet_suback_view suback_view = { + .packet_id = subscribe_view->packet_id, + .reason_code_count = reason_code_count, + .reason_codes = mqtt5_suback_codes, + }; + + int result = s_mqtt5_mock_server_send_packet_streaming(connection, AWS_MQTT5_PT_SUBACK, &suback_view); + + aws_mem_release(connection->allocator, mqtt5_suback_codes); + + return result; +} + +static int s_mqtt5to3_adapter_subscribe_multi_oversized_suback_fn(struct aws_allocator *allocator, void *ctx) { + (void)ctx; + + aws_mqtt_library_init(allocator); + + struct mqtt5_client_test_options test_options; + aws_mqtt5_client_test_init_default_options(&test_options); + + test_options.server_function_table.packet_handlers[AWS_MQTT5_PT_SUBSCRIBE] = + s_mqtt5_mock_server_handle_subscribe_suback_oversized; + + struct aws_mqtt5_client_mqtt5_mock_test_fixture_options test_fixture_options = { + .client_options = &test_options.client_options, + .server_function_table = &test_options.server_function_table, + }; + + struct aws_mqtt5_to_mqtt3_adapter_test_fixture fixture; + ASSERT_SUCCESS(aws_mqtt5_to_mqtt3_adapter_test_fixture_init(&fixture, allocator, &test_fixture_options)); + + struct aws_mqtt_client_connection *connection = fixture.connection; + + struct aws_mqtt_connection_options connection_options; + s_init_adapter_connection_options_from_fixture(&connection_options, &fixture); + + connection_options.on_connection_complete = s_aws_mqtt5_to_mqtt3_adapter_test_fixture_record_connection_complete; + connection_options.user_data = &fixture; + + aws_mqtt_client_connection_connect(connection, &connection_options); + + s_wait_for_n_adapter_lifecycle_events(&fixture, AWS_MQTT3_LET_CONNECTION_COMPLETE, 1); + + struct aws_mqtt_topic_subscription subscriptions[] = { + { + .topic = aws_byte_cursor_from_c_str("topic/1"), + .qos = AWS_MQTT_QOS_AT_LEAST_ONCE, + }, + { + .topic = aws_byte_cursor_from_c_str("topic/2"), + .qos = AWS_MQTT_QOS_AT_MOST_ONCE, + }, + }; + + struct aws_array_list subscription_list; + aws_array_list_init_static_from_initialized( + &subscription_list, subscriptions, 2, sizeof(struct aws_mqtt_topic_subscription)); + + aws_mqtt_client_connection_subscribe_multiple( + connection, + &subscription_list, + s_aws_mqtt5_to_mqtt3_adapter_test_fixture_record_subscribe_multi_complete, + &fixture); + + s_wait_for_n_adapter_operation_events(&fixture, AWS_MQTT3_OET_SUBSCRIBE_COMPLETE, 1); + + aws_mqtt5_to_mqtt3_adapter_test_fixture_clean_up(&fixture); + aws_mqtt_library_clean_up(); + + return AWS_OP_SUCCESS; +} + +AWS_TEST_CASE(mqtt5to3_adapter_subscribe_multi_oversized_suback, s_mqtt5to3_adapter_subscribe_multi_oversized_suback_fn) + static int s_mqtt5_mock_server_handle_subscribe_suback_failure( void *packet, struct aws_mqtt5_server_mock_connection_context *connection,
