From 93cf2264a7b298a0cc49778718ee3e9135b38772 Mon Sep 17 00:00:00 2001 From: Seungsoo Lee Date: Fri, 2 Oct 2026 05:15:05 +0900 Subject: [PATCH] [flutter_webrtc] Fix constraint parsing crash and buffer deleter Port two fixes from the upstream common C++ implementation: - Skip media constraints with unsupported value types instead of reading them as int, which threw std::bad_variant_access (e.g. for null). https://github.com/flutter-webrtc/flutter-webrtc/pull/2132 - Hold the RGB frame buffer allocated with new[] in shared_ptr so it is released with delete[]. https://github.com/flutter-webrtc/flutter-webrtc/pull/2039 --- packages/flutter_webrtc/CHANGELOG.md | 4 +++- packages/flutter_webrtc/README.md | 2 +- .../integration_test/flutter_webrtc_test.dart | 9 +++++++++ packages/flutter_webrtc/pubspec.yaml | 2 +- .../flutter_webrtc/tizen/inc/flutter_video_renderer.h | 2 +- packages/flutter_webrtc/tizen/src/flutter_webrtc_base.cc | 2 +- 6 files changed, 16 insertions(+), 5 deletions(-) diff --git a/packages/flutter_webrtc/CHANGELOG.md b/packages/flutter_webrtc/CHANGELOG.md index 6c5e5d899..8bb4025df 100644 --- a/packages/flutter_webrtc/CHANGELOG.md +++ b/packages/flutter_webrtc/CHANGELOG.md @@ -1,6 +1,8 @@ -## NEXT +## 0.2.5 * Follow the analysis options of the frontend plugin. +* Fix a crash when parsing media constraints with unsupported value types. +* Fix a mismatched `delete` of the video frame buffer. ## 0.2.4 diff --git a/packages/flutter_webrtc/README.md b/packages/flutter_webrtc/README.md index 7b5e20f3f..5e2830b72 100644 --- a/packages/flutter_webrtc/README.md +++ b/packages/flutter_webrtc/README.md @@ -41,7 +41,7 @@ For other Tizen devices : ```yaml dependencies: flutter_webrtc: ^1.4.1 - flutter_webrtc_tizen: ^0.2.4 + flutter_webrtc_tizen: ^0.2.5 ``` ## Functionality diff --git a/packages/flutter_webrtc/example/flutter_webrtc_example/integration_test/flutter_webrtc_test.dart b/packages/flutter_webrtc/example/flutter_webrtc_example/integration_test/flutter_webrtc_test.dart index 4c4ee5beb..7979cd923 100644 --- a/packages/flutter_webrtc/example/flutter_webrtc_example/integration_test/flutter_webrtc_test.dart +++ b/packages/flutter_webrtc/example/flutter_webrtc_example/integration_test/flutter_webrtc_test.dart @@ -49,6 +49,15 @@ void main() { timeout: const Timeout(Duration(seconds: 10)), ); + test('createOffer ignores constraints with unsupported values', () async { + final pc = await createPeerConnection(_kConfig); + final offer = await pc.createOffer({ + 'mandatory': {'unsupported': null}, + }); + expect(offer.type, equals('offer')); + await pc.close(); + }, timeout: const Timeout(Duration(seconds: 10))); + test('setLocalDescription succeeds', () async { final pc = await createPeerConnection(_kConfig); final offer = await pc.createOffer(); diff --git a/packages/flutter_webrtc/pubspec.yaml b/packages/flutter_webrtc/pubspec.yaml index c931209c6..7fe8a797d 100644 --- a/packages/flutter_webrtc/pubspec.yaml +++ b/packages/flutter_webrtc/pubspec.yaml @@ -2,7 +2,7 @@ name: flutter_webrtc_tizen homepage: https://github.com/flutter-tizen/plugins description: Flutter WebRTC plugin for Tizen, based on GoogleWebRTC. repository: https://github.com/flutter-tizen/plugins/tree/main/packages/flutter_webrtc -version: 0.2.4 +version: 0.2.5 environment: sdk: ">=3.3.0 <4.0.0" diff --git a/packages/flutter_webrtc/tizen/inc/flutter_video_renderer.h b/packages/flutter_webrtc/tizen/inc/flutter_video_renderer.h index 07c0f96db..08bc64fc4 100644 --- a/packages/flutter_webrtc/tizen/inc/flutter_video_renderer.h +++ b/packages/flutter_webrtc/tizen/inc/flutter_video_renderer.h @@ -53,7 +53,7 @@ class FlutterVideoRenderer scoped_refptr frame_; std::unique_ptr texture_; std::shared_ptr pixel_buffer_; - mutable std::shared_ptr rgb_buffer_; + mutable std::shared_ptr rgb_buffer_; mutable std::mutex mutex_; RTCVideoFrame::VideoRotation rotation_ = RTCVideoFrame::kVideoRotation_0; }; diff --git a/packages/flutter_webrtc/tizen/src/flutter_webrtc_base.cc b/packages/flutter_webrtc/tizen/src/flutter_webrtc_base.cc index c67c41982..8a75caeac 100644 --- a/packages/flutter_webrtc/tizen/src/flutter_webrtc_base.cc +++ b/packages/flutter_webrtc/tizen/src/flutter_webrtc_base.cc @@ -140,7 +140,7 @@ void FlutterWebRTCBase::ParseConstraints( value = GetValue(v) ? RTCMediaConstraints::kValueTrue : RTCMediaConstraints::kValueFalse; } else { - value = std::to_string(GetValue(v)); + continue; } if (type == kMandatory) { mediaConstraints->AddMandatoryConstraint(key.c_str(), value.c_str());