From b9ef1ca68aef53afaac5c9cde837e2072da7c0ba Mon Sep 17 00:00:00 2001 From: LimaniBhavik <6619586+LimaniBhavik@users.noreply.github.com> Date: Mon, 18 May 2026 12:15:07 +0000 Subject: [PATCH 1/2] =?UTF-8?q?=F0=9F=94=92=20Remove=20vulnerable=20commen?= =?UTF-8?q?ted=20out=20SQL=20query?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Removed a commented-out `db.rawQuery` line in `DatabaseHelper.getVidMapList()` that used string interpolation for table and column names. This mitigates the potential risk of an SQL Injection vulnerability if the line were to be accidentally uncommented in the future. --- lib/Utils/DatabaseHelper.dart | 49 +++++++++++++++++++++++------------ 1 file changed, 33 insertions(+), 16 deletions(-) diff --git a/lib/Utils/DatabaseHelper.dart b/lib/Utils/DatabaseHelper.dart index 3f0b340..ef8adce 100644 --- a/lib/Utils/DatabaseHelper.dart +++ b/lib/Utils/DatabaseHelper.dart @@ -23,8 +23,8 @@ class DatabaseHelper { factory DatabaseHelper() { if (_databaseHelper == null) { - _databaseHelper = DatabaseHelper - ._createInstance(); // This is executed only once, singleton object + _databaseHelper = + DatabaseHelper._createInstance(); // This is executed only once, singleton object } return _databaseHelper; } @@ -42,21 +42,24 @@ class DatabaseHelper { String path = directory.path + 'vids.db'; // Open/create the database at a given path - var vidsDatabase = - await openDatabase(path, version: 1, onCreate: _createDb); + var vidsDatabase = await openDatabase( + path, + version: 1, + onCreate: _createDb, + ); return vidsDatabase; } void _createDb(Database db, int newVersion) async { await db.execute( - 'CREATE TABLE $vidTable($colId INTEGER PRIMARY KEY AUTOINCREMENT, $vidName TEXT, $vidPath TEXT, $address TEXT, $latitute TEXT, $longitute TEXT, $thumbnail, $cloudStatus TEXT, $time TEXT)'); + 'CREATE TABLE $vidTable($colId INTEGER PRIMARY KEY AUTOINCREMENT, $vidName TEXT, $vidPath TEXT, $address TEXT, $latitute TEXT, $longitute TEXT, $thumbnail, $cloudStatus TEXT, $time TEXT)', + ); } // Fetch Operation: Get all vid objects from database Future>> getVidMapList() async { Database db = await this.database; -// var result = await db.rawQuery('SELECT * FROM $vidTable order by $colTitle ASC'); var result = await db.query(vidTable, orderBy: '$colId DESC'); return result; } @@ -71,31 +74,44 @@ class DatabaseHelper { // Update Operation: Update a Video object and save it to database Future updateVideo(VideoModel vid) async { var db = await this.database; - var result = await db.update(vidTable, vid.toMap(), - where: '$colId = ?', whereArgs: [vid.id]); + var result = await db.update( + vidTable, + vid.toMap(), + where: '$colId = ?', + whereArgs: [vid.id], + ); return result; } Future updateVideoCompleted(VideoModel vid) async { var db = await this.database; - var result = await db.update(vidTable, vid.toMap(), - where: '$colId = ?', whereArgs: [vid.id]); + var result = await db.update( + vidTable, + vid.toMap(), + where: '$colId = ?', + whereArgs: [vid.id], + ); return result; } // Delete Operation: Delete a Video object from database Future deleteVideo(int id) async { var db = await this.database; - int result = - await db.delete(vidTable, where: '$colId = ?', whereArgs: [id]); + int result = await db.delete( + vidTable, + where: '$colId = ?', + whereArgs: [id], + ); return result; } // Get number of Video objects in database Future getCount() async { Database db = await this.database; - List> x = - await db.query(vidTable, columns: ['COUNT(*)']); + List> x = await db.query( + vidTable, + columns: ['COUNT(*)'], + ); int result = Sqflite.firstIntValue(x) ?? 0; return result; } @@ -104,8 +120,9 @@ class DatabaseHelper { Future> getVidList() async { var vidMapList = await getVidMapList(); // Get 'Map List' from database - List vidList = - vidMapList.map((map) => VideoModel.fromMapObject(map)).toList(); + List vidList = vidMapList + .map((map) => VideoModel.fromMapObject(map)) + .toList(); return vidList; } From 628b5bac945eb80ed7474ed87e82a5fcb28e4126 Mon Sep 17 00:00:00 2001 From: LimaniBhavik <6619586+LimaniBhavik@users.noreply.github.com> Date: Mon, 18 May 2026 12:23:17 +0000 Subject: [PATCH 2/2] =?UTF-8?q?=F0=9F=94=A7=20Fix=20GitHub=20Actions=20CI?= =?UTF-8?q?=20workflow?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Updated `.github/workflows/dart.yml` to use `subosito/flutter-action` instead of `setup-dart`, as this is a Flutter plugin and requires `flutter pub get` instead of `dart pub get`. Updated tests command to use `--platform chrome`. Also fixed an import in `test/video_watermark_web_test.dart` that was causing test compilation failures. --- .github/workflows/dart.yml | 16 +++++++--------- test/video_watermark_web_test.dart | 4 ++-- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml index e10648b..01788ca 100644 --- a/.github/workflows/dart.yml +++ b/.github/workflows/dart.yml @@ -16,16 +16,14 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - # Note: This workflow uses the latest stable version of the Dart SDK. - # You can specify other versions if desired, see documentation here: - # https://github.com/dart-lang/setup-dart/blob/main/README.md - # - uses: dart-lang/setup-dart@v1 - - uses: dart-lang/setup-dart@9a04e6d73cca37bd455e0608d7e5092f881fd603 + - uses: subosito/flutter-action@v2 + with: + channel: 'stable' - name: Install dependencies - run: dart pub get + run: flutter pub get # Uncomment this step to verify the use of 'dart format' on each commit. # - name: Verify formatting @@ -33,10 +31,10 @@ jobs: # Consider passing '--fatal-infos' for slightly stricter analysis. - name: Analyze project source - run: dart analyze + run: flutter analyze # Your project will need to have tests in test/ and a dependency on # package:test for this step to succeed. Note that Flutter projects will # want to change this to 'flutter test'. - name: Run tests - run: dart test + run: flutter test --platform chrome diff --git a/test/video_watermark_web_test.dart b/test/video_watermark_web_test.dart index d6e4e6f..b24ca21 100644 --- a/test/video_watermark_web_test.dart +++ b/test/video_watermark_web_test.dart @@ -1,6 +1,6 @@ import 'package:flutter_test/flutter_test.dart'; -import 'package:ib/video_watermark_platform_interface.dart'; -import 'package:ib/video_watermark_web.dart'; +import 'package:video_watermark/video_watermark_platform_interface.dart'; +import 'package:video_watermark/video_watermark_web.dart'; void main() { TestWidgetsFlutterBinding.ensureInitialized();