Skip to content

Commit af4bf27

Browse files
author
Madhu
authored
Merge pull request #23 from blackducksoftware/dev/idetect-4058
Fix for IDETECT-4058
2 parents 12908fe + e55d238 commit af4bf27

File tree

4 files changed

+48
-3
lines changed

4 files changed

+48
-3
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.synopsys.integration.blackduck.imageinspector.containerfilesystem;
2+
3+
public class DataStripper {
4+
5+
public static String stripEpochFromVersion(String version) {
6+
return version != null && version.startsWith("0:") ? version.substring(2) : version;
7+
}
8+
9+
public static String stripEpochFromExternalId(String externalId) {
10+
int pos;
11+
if (externalId != null && (pos = externalId.indexOf("/0:")) > -1) {
12+
return externalId.substring(0, pos + 1).concat(externalId.substring(pos + 3));
13+
}
14+
return externalId;
15+
}
16+
17+
}

src/main/java/com/synopsys/integration/blackduck/imageinspector/containerfilesystem/pkgmgr/apk/ApkPkgMgr.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.springframework.stereotype.Component;
2828

2929
import com.synopsys.integration.blackduck.imageinspector.api.PackageManagerEnum;
30+
import com.synopsys.integration.blackduck.imageinspector.containerfilesystem.DataStripper;
3031
import com.synopsys.integration.blackduck.imageinspector.containerfilesystem.components.ComponentDetails;
3132
import com.synopsys.integration.blackduck.imageinspector.containerfilesystem.pkgmgr.ComponentRelationshipPopulater;
3233
import com.synopsys.integration.blackduck.imageinspector.containerfilesystem.pkgmgr.pkgmgrdb.CommonRelationshipPopulater;
@@ -146,7 +147,7 @@ private Optional<ComponentDetails> createComponentForPackage(final String linuxD
146147
logger.warn(String.format("apk output contains an invalid line: %s", packageLine));
147148
return Optional.empty();
148149
}
149-
final String version = extractVersion(parts);
150+
final String version = DataStripper.stripEpochFromVersion(extractVersion(parts));
150151
final String component = extractComponent(parts);
151152
// if a package starts with a period, ignore it. It's a virtual meta package and the version information is missing
152153
if (component.startsWith(".")) {

src/main/java/com/synopsys/integration/blackduck/imageinspector/containerfilesystem/pkgmgr/rpm/RpmPkgMgr.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,8 @@ public List<ComponentDetails> extractComponentsFromPkgMgrOutput(File imageFileSy
9797
final RpmPackage rpmPackage = gson.fromJson(packageLine, RpmPackage.class);
9898
final String packageName = rpmPackage.getName();
9999
String packageVersion = rpmPackage.getVersion();
100-
if (!NO_VALUE.equals(rpmPackage.getEpoch())) {
101-
packageVersion = String.format("%s:%s", rpmPackage.getEpoch(), rpmPackage.getVersion());
100+
if (!NO_VALUE.equals(rpmPackage.getEpoch()) && rpmPackage.getEpoch() != null && !rpmPackage.getEpoch().equals("0")) {
101+
packageVersion = String.format("%s:%s", rpmPackage.getEpoch(), packageVersion);
102102
}
103103
String arch = "";
104104
if (!NO_VALUE.equals(rpmPackage.getArch())) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.synopsys.integration.blackduck.imageinspector.containerfilesystem;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
import org.junit.jupiter.api.Test;
5+
6+
public class DataStripperTest {
7+
8+
@Test
9+
void stripEpocFromVersionTest() {
10+
assertEquals(null, DataStripper.stripEpocFromVersion(null));
11+
assertEquals("", DataStripper.stripEpocFromVersion(""));
12+
assertEquals("1:0:", DataStripper.stripEpocFromVersion("1:0:"));
13+
assertEquals("0:", DataStripper.stripEpocFromVersion("0:0:"));
14+
assertEquals(" ", DataStripper.stripEpocFromVersion(" "));
15+
assertEquals("1.62.0-r5", DataStripper.stripEpocFromVersion("1.62.0-r5"));
16+
assertEquals("1.62.0-r5", DataStripper.stripEpocFromVersion("0:1.62.0-r5"));
17+
}
18+
19+
@Test
20+
void stripEpochFromExternalIdTest() {
21+
assertEquals("name/:7.0.0", DataStripper.stripEpochFromExternalId("name/:7.0.0"));
22+
assertEquals("/7.0.0", DataStripper.stripEpochFromExternalId("/7.0.0"));
23+
assertEquals("name/7.0.0", DataStripper.stripEpochFromExternalId("name/0:7.0.0"));
24+
assertEquals("name/1:7.0.0", DataStripper.stripEpochFromExternalId("name/1:7.0.0"));
25+
}
26+
27+
}

0 commit comments

Comments
 (0)