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]