diff --git a/src/changes/changes.xml b/src/changes/changes.xml index e940c0439f..296ff2c3c7 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -5,10 +5,11 @@ Jon Iles - + Added the `Task.getBaselineTask()` methods. For applications where a separate baseline schedule is present or a baseline has been manually added to the `ProjectFile` instance, these methods will allow you to access the underlying baseline task instance from the current task instance. Added the Activity Percent Complete attribute to the `Task` class. The value of this attribute will be the Duration, Physical or Units percent complete value, based on the Percent Complete Type setting. This attribute is provided as a convenience to match the Activity Percent Complete type value shown in P6. Improve retrieval of custom field values for certain MPP files. + Improve handling of PMXML files with more than 11 baselines. Fix CVE-2024-49771: Potential Path Traversal Vulnerability (Contributed by yyjLF and sprinkle). diff --git a/src/main/java/net/sf/mpxj/primavera/PrimaveraPMFileReader.java b/src/main/java/net/sf/mpxj/primavera/PrimaveraPMFileReader.java index 61c4767e43..d93956e1f2 100644 --- a/src/main/java/net/sf/mpxj/primavera/PrimaveraPMFileReader.java +++ b/src/main/java/net/sf/mpxj/primavera/PrimaveraPMFileReader.java @@ -325,7 +325,7 @@ private void populateBaselines(APIBusinessObjects apibo, List proje if (apibo.getProjectList() != null && apibo.getProjectList().getProject().stream().anyMatch(p -> !p.getBaselineProject().isEmpty())) { // We have baselines in the project list - populateBaselinesbyProjectList(apibo, projects); + populateBaselinesByProjectList(apibo, projects); } } } @@ -343,7 +343,7 @@ private void populateBaselinesByUniqueID(List projects) } } - private void populateBaselinesbyProjectList(APIBusinessObjects apibo, List projects) + private void populateBaselinesByProjectList(APIBusinessObjects apibo, List projects) { Map map = projects.stream().collect(Collectors.toMap(p -> p.getProjectProperties().getUniqueID(), p -> p)); for (ProjectListType.Project project : apibo.getProjectList().getProject()) @@ -368,7 +368,14 @@ private void populateBaselinesbyProjectList(APIBusinessObjects apibo, List 10) + { + break; + } } } }