Skip to content

Commit 20c6a0b

Browse files
authored
Merge pull request #196 from spdx/issue195
Check for relative file names in file verify
2 parents f77d643 + 96cb95b commit 20c6a0b

5 files changed

Lines changed: 32 additions & 11 deletions

File tree

src/main/java/org/spdx/library/model/SpdxFile.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,9 @@ protected List<String> _verify(Set<String> verifiedIds, String specVersion) {
269269
Optional<String> myName = this.getName();
270270
if (myName.isPresent()) {
271271
fileName = myName.get();
272+
if (fileName.startsWith("/")) {
273+
retval.add("File name name must be relative - the name must not start with a '/'. Found "+fileName);
274+
}
272275
} else {
273276
retval.add("Missing required file name");
274277
}

src/test/java/org/spdx/library/model/SpdxDocumentTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ protected void setUp() throws Exception {
125125
RELATIONSHIP2 = gmo.createRelationship(RELATED_ELEMENT2,
126126
RelationshipType.DYNAMIC_LINK, "Relationship Comment2");
127127
FILE1 = gmo.createSpdxFile(gmo.getModelStore().getNextId(IdType.SpdxId, gmo.getDocumentUri()),
128-
"FileName1", LICENSE1, Arrays.asList(new ExtractedLicenseInfo[] {LICENSE2}),
128+
"./FileName1", LICENSE1, Arrays.asList(new ExtractedLicenseInfo[] {LICENSE2}),
129129
"File Copyright1", CHECKSUM1)
130130
.setComment("FileComment 1")
131131
.setLicenseComments("License Comment1")
@@ -135,7 +135,7 @@ protected void setUp() throws Exception {
135135
.build();
136136

137137
FILE2 = gmo.createSpdxFile(gmo.getModelStore().getNextId(IdType.SpdxId, gmo.getDocumentUri()),
138-
"FileName2", LICENSE2, Arrays.asList(new ExtractedLicenseInfo[] {LICENSE3}),
138+
"./FileName2", LICENSE2, Arrays.asList(new ExtractedLicenseInfo[] {LICENSE3}),
139139
"File Copyright2", CHECKSUM2)
140140
.setComment("FileComment 2")
141141
.setLicenseComments("License Comment2")
@@ -145,7 +145,7 @@ protected void setUp() throws Exception {
145145
.build();
146146

147147
FILE3 = gmo.createSpdxFile(gmo.getModelStore().getNextId(IdType.SpdxId, gmo.getDocumentUri()),
148-
"FileName3", LICENSE3, Arrays.asList(new ExtractedLicenseInfo[] {LICENSE1}),
148+
"./FileName3", LICENSE3, Arrays.asList(new ExtractedLicenseInfo[] {LICENSE1}),
149149
"File Copyright2", CHECKSUM1)
150150
.setComment("FileComment 3")
151151
.setLicenseComments("License Comment3")

src/test/java/org/spdx/library/model/SpdxFileTest.java

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ public void testVerify() throws InvalidSPDXAnalysisException {
111111
List<String> contributors = Arrays.asList(new String[] {"Contrib1", "Contrib2"});
112112

113113
SpdxFile fileDep1 = gmo.createSpdxFile(gmo.getModelStore().getNextId(IdType.SpdxId, gmo.getDocumentUri()),
114-
"fileDep1", COMPLEX_LICENSE, seenLic, "Copyright1", SHA1)
114+
"./fileDep1", COMPLEX_LICENSE, seenLic, "Copyright1", SHA1)
115115
.setLicenseComments("License Comments1")
116116
.setComment("Comment1")
117117
.setNoticeText("Notice Text")
@@ -123,15 +123,15 @@ public void testVerify() throws InvalidSPDXAnalysisException {
123123
assertEquals(0, verify.size());
124124

125125
SpdxFile fileDep2 =gmo.createSpdxFile(gmo.getModelStore().getNextId(IdType.SpdxId, gmo.getDocumentUri()),
126-
"fileDep2", COMPLEX_LICENSE, seenLic, "Copyright2", SHA1)
126+
"./fileDep2", COMPLEX_LICENSE, seenLic, "Copyright2", SHA1)
127127
.setComment("Comment2")
128128
.addAnnotation(ANNOTATION3)
129129
.setLicenseComments("License Comments2")
130130
.addFileType(FileType.BINARY)
131131
.build();
132132

133133
String fileNotice = "File Notice";
134-
String name = "fileName";
134+
String name = "./fileName";
135135
String comment = "file comments";
136136
String copyright = "Copyrights";
137137
String licenseComment = "License comments";
@@ -155,7 +155,7 @@ public void testVerify23Fields() throws InvalidSPDXAnalysisException {
155155

156156

157157
SpdxFile file = gmo.createSpdxFile(gmo.getModelStore().getNextId(IdType.SpdxId, gmo.getDocumentUri()),
158-
"name", null, Arrays.asList(new AnyLicenseInfo[] {}), null, SHA1)
158+
"./name", null, Arrays.asList(new AnyLicenseInfo[] {}), null, SHA1)
159159
.build();
160160
assertEquals(0, file.verify().size());
161161
assertTrue(file.verify(Version.TWO_POINT_ZERO_VERSION).size() > 0);
@@ -489,4 +489,22 @@ public void testDependency() throws InvalidSPDXAnalysisException {
489489
assertEquals(1, result.size());
490490
assertTrue(result.contains(dep));
491491
}
492+
493+
public void testVerifyNonLocalFileName() throws InvalidSPDXAnalysisException {
494+
SpdxFile file = gmo.createSpdxFile(gmo.getModelStore().getNextId(IdType.SpdxId, gmo.getDocumentUri()),
495+
"/filename", COMPLEX_LICENSE, Arrays.asList(CONJUNCTIVE_LICENSES), SpdxConstants.NOASSERTION_VALUE, SHA1)
496+
.build();
497+
List<String> result = file.verify();
498+
assertEquals(1, result.size());
499+
SpdxFile file2 = gmo.createSpdxFile(gmo.getModelStore().getNextId(IdType.SpdxId, gmo.getDocumentUri()),
500+
"./filename", COMPLEX_LICENSE, Arrays.asList(CONJUNCTIVE_LICENSES), SpdxConstants.NOASSERTION_VALUE, SHA1)
501+
.build();
502+
result = file2.verify();
503+
assertTrue(result.isEmpty());
504+
SpdxFile file3 = gmo.createSpdxFile(gmo.getModelStore().getNextId(IdType.SpdxId, gmo.getDocumentUri()),
505+
"filename", COMPLEX_LICENSE, Arrays.asList(CONJUNCTIVE_LICENSES), SpdxConstants.NOASSERTION_VALUE, SHA1)
506+
.build();
507+
result = file3.verify();
508+
assertTrue(result.isEmpty());
509+
}
492510
}

src/test/java/org/spdx/library/model/SpdxPackageTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ protected void setUp() throws Exception {
141141
LICENSE3 = new ExtractedLicenseInfo("LicenseRef-3", "License Text 3");
142142

143143
FILE1 = gmo.createSpdxFile(gmo.getModelStore().getNextId(IdType.SpdxId, gmo.getDocumentUri()),
144-
"FileName1", LICENSE1, Arrays.asList(new AnyLicenseInfo[] {LICENSE2}),
144+
"./FileName1", LICENSE1, Arrays.asList(new AnyLicenseInfo[] {LICENSE2}),
145145
COPYRIGHT_TEXT1, CHECKSUM1)
146146
.setComment("File Comment1")
147147
.setLicenseComments(LICENSE_COMMENT1)
@@ -151,7 +151,7 @@ protected void setUp() throws Exception {
151151
.build();
152152

153153
FILE2 = gmo.createSpdxFile(gmo.getModelStore().getNextId(IdType.SpdxId, gmo.getDocumentUri()),
154-
"FileName2", LICENSE2, Arrays.asList(new AnyLicenseInfo[] {LICENSE1, LICENSE2}),
154+
"./FileName2", LICENSE2, Arrays.asList(new AnyLicenseInfo[] {LICENSE1, LICENSE2}),
155155
COPYRIGHT_TEXT2, CHECKSUM4)
156156
.setComment("File Comment2")
157157
.setLicenseComments(LICENSE_COMMENT2)

src/test/java/org/spdx/library/model/SpdxSnippetTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,11 +142,11 @@ protected void setUp() throws Exception {
142142
}));
143143

144144
FROM_FILE1 = gmo.createSpdxFile(gmo.getModelStore().getNextId(IdType.SpdxId, gmo.getDocumentUri()),
145-
"fromFile1", COMPLEX_LICENSE, Arrays.asList(NON_STD_LICENSES), SpdxConstants.NOASSERTION_VALUE,
145+
"./fromFile1", COMPLEX_LICENSE, Arrays.asList(NON_STD_LICENSES), SpdxConstants.NOASSERTION_VALUE,
146146
gmo.createChecksum(ChecksumAlgorithm.SHA1, "1123456789abcdef0123456789abcdef01234567")).build();
147147

148148
FROM_FILE2 = gmo.createSpdxFile(gmo.getModelStore().getNextId(IdType.SpdxId, gmo.getDocumentUri()),
149-
"fromFile2", STANDARD_LICENSES[0], Arrays.asList(STANDARD_LICENSES), SpdxConstants.NOASSERTION_VALUE,
149+
"./fromFile2", STANDARD_LICENSES[0], Arrays.asList(STANDARD_LICENSES), SpdxConstants.NOASSERTION_VALUE,
150150
gmo.createChecksum(ChecksumAlgorithm.SHA1, "5555556789abcdef0123456789abcdef01234567")).build();
151151

152152
BOP_POINTER1_1 = gmo.createByteOffsetPointer(FROM_FILE1, OFFSET1_1);

0 commit comments

Comments
 (0)