This is an automated email from the ASF dual-hosted git repository.

LiuTianyou pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hertzbeat.git


The following commit(s) were added to refs/heads/master by this push:
     new 1b7f7f9733 [fix] fixed the issue of plugin upload failure. (#4179)
1b7f7f9733 is described below

commit 1b7f7f9733ae84ef1eeadb712e244ee991a183ac
Author: liutianyou <[email protected]>
AuthorDate: Mon Jun 29 11:13:42 2026 +0800

    [fix] fixed the issue of plugin upload failure. (#4179)
---
 .../hertzbeat/manager/service/impl/PluginServiceImpl.java     | 11 +++++------
 .../apache/hertzbeat/manager/service/PluginServiceTest.java   |  2 +-
 2 files changed, 6 insertions(+), 7 deletions(-)

diff --git 
a/hertzbeat-manager/src/main/java/org/apache/hertzbeat/manager/service/impl/PluginServiceImpl.java
 
b/hertzbeat-manager/src/main/java/org/apache/hertzbeat/manager/service/impl/PluginServiceImpl.java
index a8206b35bf..a36f4530f2 100644
--- 
a/hertzbeat-manager/src/main/java/org/apache/hertzbeat/manager/service/impl/PluginServiceImpl.java
+++ 
b/hertzbeat-manager/src/main/java/org/apache/hertzbeat/manager/service/impl/PluginServiceImpl.java
@@ -221,12 +221,12 @@ public class PluginServiceImpl implements PluginService {
      * @param jarFile jar file
      * @return return the result of jar package parsed
      */
-    public PluginMetadata validateJarFile(File jarFile) {
+    public PluginMetadata validateJarFile(File jarFile, String extLibPath) {
         PluginMetadata metadata = new PluginMetadata();
         List<PluginItem> pluginItems = new ArrayList<>();
         AtomicInteger pluginImplementationCount = new AtomicInteger(0);
         try {
-            validateFilePath(jarFile);
+            validateFilePath(jarFile, extLibPath);
             URL jarUrl = new URL("file:" + jarFile.getAbsolutePath());
             validateJarUrl(jarUrl);
             try (URLClassLoader classLoader = new URLClassLoader(new 
URL[]{jarUrl}, this.getClass().getClassLoader());
@@ -281,11 +281,10 @@ public class PluginServiceImpl implements PluginService {
      *
      * @param file the file to validate
      */
-    private void validateFilePath(File file) {
+    private void validateFilePath(File file, String extLibPath) {
         try {
             String canonicalPath = file.getCanonicalPath();
-            String expectedDir = new File("plugin-lib").getCanonicalPath();
-            if (!canonicalPath.startsWith(expectedDir)) {
+            if (!canonicalPath.startsWith(extLibPath)) {
                 throw new CommonException("File is outside the allowed 
directory: " + canonicalPath);
             }
         } catch (IOException e) {
@@ -327,7 +326,7 @@ public class PluginServiceImpl implements PluginService {
         List<PluginItem> pluginItems;
         PluginMetadata pluginMetadata;
         try {
-            PluginMetadata parsed = validateJarFile(destFile);
+            PluginMetadata parsed = validateJarFile(destFile, 
extLibDir.getAbsolutePath());
             pluginItems = parsed.getItems();
             pluginMetadata = PluginMetadata.builder()
                 .name(pluginUpload.getName())
diff --git 
a/hertzbeat-manager/src/test/java/org/apache/hertzbeat/manager/service/PluginServiceTest.java
 
b/hertzbeat-manager/src/test/java/org/apache/hertzbeat/manager/service/PluginServiceTest.java
index 5c3181c914..8f7fc19d0b 100644
--- 
a/hertzbeat-manager/src/test/java/org/apache/hertzbeat/manager/service/PluginServiceTest.java
+++ 
b/hertzbeat-manager/src/test/java/org/apache/hertzbeat/manager/service/PluginServiceTest.java
@@ -98,7 +98,7 @@ class PluginServiceTest {
         metadata.setItems(pluginItems);
         metadata.setParamCount(0);
         PluginServiceImpl service = spy(pluginService);
-        doReturn(metadata).when(service).validateJarFile(any());
+        doReturn(metadata).when(service).validateJarFile(any(), any());
 
         MockMultipartFile mockFile = new MockMultipartFile(
                 "file", "test-plugin.jar", "application/java-archive",


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to