Skip to content

Commit 62df880

Browse files
committed
jbmc-strings/ConstantEvaluationTrim: avoid null dereference
String refinement may or may not be successful (resulting in "ERROR" results rather than "FAILURE") when working on an unconstrained string (which the null dereference yields), depending on the models returned by the SAT solver.
1 parent f2fafac commit 62df880

File tree

3 files changed

+6
-2
lines changed

3 files changed

+6
-2
lines changed
Binary file not shown.

jbmc/regression/jbmc-strings/ConstantEvaluationTrim/Main.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,10 @@ public void trimRight() {
2424
}
2525

2626
public void noprop(String str) {
27-
str = str.trim();
28-
assert str.equals("abc");
27+
if(str != null) {
28+
str = str.trim();
29+
assert str.equals("abc");
30+
}
2931
}
3032

3133
public void empty() {

jbmc/regression/jbmc-strings/ConstantEvaluationTrim/noprop.desc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ CORE
22
Main
33
--function Main.noprop --cp `../../../../scripts/format_classpath.sh . ../../../lib/java-models-library/target/core-models.jar ../../../lib/java-models-library/target/cprover-api.jar`
44
^Generated [1-9]\d* VCC\(s\), [1-9]\d* remaining after simplification$
5+
line 29 assertion at file Main.java line 29 .*: FAILURE$
6+
^\*\* 1 of \d+ failed
57
^EXIT=10$
68
^SIGNAL=0$
79
^VERIFICATION FAILED$

0 commit comments

Comments
 (0)