From 8c41a0f6288d54152009015bc55d592eaa044349 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 25 May 2026 17:08:47 +0100 Subject: [PATCH 1/2] security: Add input validation for file path in FFmpegVideoSource constructor Implements work order 2026-05-25T15-52-02Z.2 [kimi-worker] --- .../cabrillo/tracker/video/FFmpegVideoSource.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/main/java/org/opensourcephysics/cabrillo/tracker/video/FFmpegVideoSource.java b/src/main/java/org/opensourcephysics/cabrillo/tracker/video/FFmpegVideoSource.java index 8f834fbf..626e66bf 100644 --- a/src/main/java/org/opensourcephysics/cabrillo/tracker/video/FFmpegVideoSource.java +++ b/src/main/java/org/opensourcephysics/cabrillo/tracker/video/FFmpegVideoSource.java @@ -1,6 +1,7 @@ package org.opensourcephysics.cabrillo.tracker.video; import java.awt.image.BufferedImage; +import java.nio.file.Files; import java.nio.file.Path; import java.util.concurrent.locks.ReentrantReadWriteLock; @@ -69,6 +70,19 @@ public FFmpegVideoSource(int cacheSize) { public void open(Path file) { lock.writeLock().lock(); try { + if (file == null) { + throw new IllegalArgumentException("Video file path cannot be null"); + } + if (!file.toString().trim().isEmpty() && !Files.exists(file)) { + throw new IllegalArgumentException("Video file does not exist: " + file); + } + if (Files.exists(file) && !Files.isReadable(file)) { + throw new IllegalArgumentException("Video file is not readable: " + file); + } + if (file.toString().trim().isEmpty()) { + throw new IllegalArgumentException("Video file path cannot be empty"); + } + if (isOpen()) { close(); } From 82ff28e790be11c532662fecf03acf9e2b44b913 Mon Sep 17 00:00:00 2001 From: Unluckyathecking <111193970+Unluckyathecking@users.noreply.github.com> Date: Tue, 26 May 2026 14:16:39 +0100 Subject: [PATCH 2/2] ci: jumpstart kimi review (post Pro upgrade)