Skip to content

Commit 8b50dcf

Browse files
committed
String solver: support bounded-length intermediate strings
This adds support for the string solver to use constant-sized arrays to store variable-length strings (which may be cheaper since smaller formulas are generally needed to represent them and their constraints to the solver) This is off-by-default for now since it has not been heavily studied: I expect constant-sized arrays would be expensive in the case where strings are numerous and sparsely constrained, but cheaper when there are many index expressions leading to an explosion of Ackermann constraints.
1 parent 06d473f commit 8b50dcf

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+592
-66
lines changed

Diff for: .gitignore

+1-2
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,7 @@ regression/**/tests-*.log
6060
regression/**/*.goto-cc-saved
6161
regression/**/*.gb
6262
regression/**/*.smt2
63-
jbmc/regression/**/tests.log
64-
jbmc/regression/**/tests-symex-driven-loading.log
63+
jbmc/regression/**/*.log
6564

6665
# regression/coverage file
6766
/regression/coverage_**

Diff for: jbmc/regression/jbmc-strings/CMakeLists.txt

+7
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,13 @@ add_test_pl_tests(
22
"$<TARGET_FILE:jbmc> --validate-goto-model --validate-ssa-equation"
33
)
44

5+
add_test_pl_profile(
6+
"jbmc-strings-fixed-size-arrays"
7+
"$<TARGET_FILE:jbmc> --validate-goto-model --validate-ssa-equation --max-intermediate-string-length 100 --use-fixed-size-arrays-for-bounded-strings --no-array-field-sensitivity"
8+
"-C;-s;fixed-size-strings;-X;limited-size-strings-expected-failure"
9+
"CORE"
10+
)
11+
512
add_test_pl_profile(
613
"jbmc-strings-symex-driven-lazy-loading"
714
"$<TARGET_FILE:jbmc> --validate-goto-model --validate-ssa-equation --symex-driven-lazy-loading"

Diff for: jbmc/regression/jbmc-strings/Makefile

+4
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,22 @@ include ../../src/config.inc
44

55
test:
66
@../$(CPROVER_DIR)/regression/test.pl -e -p -c "../../../src/jbmc/jbmc --validate-goto-model --validate-ssa-equation"
7+
@../$(CPROVER_DIR)/regression/test.pl -e -p -c "../../../src/jbmc/jbmc --validate-goto-model --validate-ssa-equation --max-intermediate-string-length 100 --use-fixed-size-arrays-for-bounded-strings --no-array-field-sensitivity" -X limited-size-strings-expected-failure -s fixed-size-strings
78
@../$(CPROVER_DIR)/regression/test.pl -e -p -c "../../../src/jbmc/jbmc --validate-goto-model --validate-ssa-equation --symex-driven-lazy-loading" -X symex-driven-lazy-loading-expected-failure -s symex-driven-loading
89

910
testfuture:
1011
@../$(CPROVER_DIR)/regression/test.pl -e -p -c "../../../src/jbmc/jbmc --validate-goto-model --validate-ssa-equation" -CF
12+
@../$(CPROVER_DIR)/regression/test.pl -e -p -c "../../../src/jbmc/jbmc --validate-goto-model --validate-ssa-equation --max-intermediate-string-length 100 --use-fixed-size-arrays-for-bounded-strings --no-array-field-sensitivity" -CF -X limited-size-strings-expected-failure -s fixed-size-strings
1113
@../$(CPROVER_DIR)/regression/test.pl -e -p -c "../../../src/jbmc/jbmc --validate-goto-model --validate-ssa-equation --symex-driven-lazy-loading" -X symex-driven-lazy-loading-expected-failure -CF -s symex-driven-loading
1214

1315
testall:
1416
@../$(CPROVER_DIR)/regression/test.pl -e -p -c "../../../src/jbmc/jbmc --validate-goto-model --validate-ssa-equation" -CFTK
17+
@../$(CPROVER_DIR)/regression/test.pl -e -p -c "../../../src/jbmc/jbmc --validate-goto-model --validate-ssa-equation --max-intermediate-string-length 100 --use-fixed-size-arrays-for-bounded-strings --no-array-field-sensitivity" -CFTK -X limited-size-strings-expected-failure -s fixed-size-strings
1518
@../$(CPROVER_DIR)/regression/test.pl -e -p -c "../../../src/jbmc/jbmc --validate-goto-model --validate-ssa-equation --symex-driven-lazy-loading" -X symex-driven-lazy-loading-expected-failure -CFTK -s symex-driven-loading
1619

1720
tests.log: ../$(CPROVER_DIR)/regression/test.pl
1821
@../$(CPROVER_DIR)/regression/test.pl -e -p -c "../../../src/jbmc/jbmc --validate-goto-model --validate-ssa-equation"
22+
@../$(CPROVER_DIR)/regression/test.pl -e -p -c "../../../src/jbmc/jbmc --validate-goto-model --validate-ssa-equation --max-intermediate-string-length 100 --use-fixed-size-arrays-for-bounded-strings --no-array-field-sensitivity" -X limited-size-strings-expected-failure -s fixed-size-strings
1923
@../$(CPROVER_DIR)/regression/test.pl -e -p -c "../../../src/jbmc/jbmc --validate-goto-model --validate-ssa-equation --symex-driven-lazy-loading" -X symex-driven-lazy-loading-expected-failure -s symex-driven-loading
2024

2125
show:

Diff for: jbmc/regression/jbmc-strings/StringContains03/test.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
CORE
1+
CORE limited-size-strings-expected-failure
22
Test
33
--function Test.check
44
^EXIT=10$

Diff for: jbmc/regression/jbmc-strings/StringIndexOf/test.desc

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1-
CORE
1+
CORE limited-size-strings-expected-failure
22
Test
33
--function Test.check --unwind 4 --max-nondet-string-length 3 --java-assume-inputs-non-null
44
^EXIT=0$
55
^SIGNAL=0$
66
^VERIFICATION SUCCESSFUL$
7+
--
8+
--
9+
Actually works fine with limited size strings, just takes a very long time.

Diff for: jbmc/regression/jbmc-strings/StringToLowerCase/test_det.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
CORE
1+
CORE limited-size-strings-expected-failure
22
Test
33
--function Test.det
44
^EXIT=10$

Diff for: jbmc/regression/jbmc-strings/StringToLowerCase/test_nondet.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
CORE
1+
CORE limited-size-strings-expected-failure
22
Test
33
--function Test.nonDet --max-nondet-string-length 1000
44
^EXIT=10$

Diff for: jbmc/regression/jbmc-strings/StringToUpperCase/test_dependency.desc

+1
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@ assertion at file Test.java line 50 .*: FAILURE
88
--
99
--
1010
Check that when there are dependencies, axioms are added correctly.
11+

Diff for: jbmc/regression/jbmc-strings/StringToUpperCase/test_det.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
CORE
1+
CORE limited-size-strings-expected-failure
22
Test
33
--function Test.det
44
^EXIT=10$

Diff for: jbmc/regression/jbmc-strings/StringToUpperCase/test_nondet.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
CORE
1+
CORE limited-size-strings-expected-failure
22
Test
33
--function Test.nonDet --max-nondet-string-length 1000
44
^EXIT=10$

Diff for: jbmc/regression/jbmc-strings/long_string/test.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
CORE
1+
CORE limited-size-strings-expected-failure
22
Test
33
--function Test.check --max-nondet-string-length 2000000
44
^EXIT=10$

Diff for: jbmc/regression/jbmc-strings/long_string/test_abort.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
CORE
1+
CORE limited-size-strings-expected-failure
22
Test
33
--function Test.checkAbort --trace --max-nondet-string-length 100000000
44
^EXIT=10$

Diff for: jbmc/regression/jbmc-strings/max-length/test2.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
CORE
1+
CORE limited-size-strings-expected-failure
22
Test
33
--max-nondet-string-length 500000 --function Test.checkMaxInputLength
44
^EXIT=10$

Diff for: jbmc/regression/jbmc-strings/max-length/test3.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
CORE
1+
CORE limited-size-strings-expected-failure
22
Test
33
--max-nondet-string-length 4001 --function Test.checkMaxLength
44
^EXIT=10$

Diff for: jbmc/regression/jbmc-strings/max-length/test4.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
CORE
1+
CORE limited-size-strings-expected-failure
22
Test
33
--max-nondet-string-length 4000 --function Test.checkMaxLength
44
^SIGNAL=0$

Diff for: jbmc/regression/jbmc-strings/string-non-empty-option/test_non_empty.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
CORE
1+
CORE limited-size-strings-expected-failure
22
Test
33
--function Test.checkMinLength --string-non-empty --max-nondet-string-length 2147483647
44
^EXIT=10$

Diff for: jbmc/regression/strings-smoke-tests/CMakeLists.txt

+7
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,13 @@ add_test_pl_tests(
22
"$<TARGET_FILE:jbmc> --validate-goto-model --validate-ssa-equation"
33
)
44

5+
add_test_pl_profile(
6+
"strings-smoke-tests-fixed-size-arrays"
7+
"$<TARGET_FILE:jbmc> --validate-goto-model --validate-ssa-equation --max-intermediate-string-length 100 --use-fixed-size-arrays-for-bounded-strings --no-array-field-sensitivity"
8+
"-C;-s;fixed-size-strings;-X;limited-size-strings-expected-failure"
9+
"CORE"
10+
)
11+
512
add_test_pl_profile(
613
"strings-smoke-tests-symex-driven-lazy-loading"
714
"$<TARGET_FILE:jbmc> --validate-goto-model --validate-ssa-equation --symex-driven-lazy-loading"

Diff for: jbmc/regression/strings-smoke-tests/Makefile

+4
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,22 @@ include ../../src/config.inc
44

55
test:
66
@../$(CPROVER_DIR)/regression/test.pl -e -p -c "../../../src/jbmc/jbmc --validate-goto-model --validate-ssa-equation"
7+
@../$(CPROVER_DIR)/regression/test.pl -e -p -c "../../../src/jbmc/jbmc --validate-goto-model --validate-ssa-equation --max-intermediate-string-length 100 --use-fixed-size-arrays-for-bounded-strings --no-array-field-sensitivity" -X limited-size-strings-expected-failure -s fixed-size-strings
78
@../$(CPROVER_DIR)/regression/test.pl -e -p -c "../../../src/jbmc/jbmc --validate-goto-model --validate-ssa-equation --symex-driven-lazy-loading" -X symex-driven-lazy-loading-expected-failure -s symex-driven-loading
89

910
testfuture:
1011
@../$(CPROVER_DIR)/regression/test.pl -e -p -c "../../../src/jbmc/jbmc --validate-goto-model --validate-ssa-equation" -CF
12+
@../$(CPROVER_DIR)/regression/test.pl -e -p -c "../../../src/jbmc/jbmc --validate-goto-model --validate-ssa-equation --max-intermediate-string-length 100 --use-fixed-size-arrays-for-bounded-strings --no-array-field-sensitivity" -CF -X limited-size-strings-expected-failure -s fixed-size-strings
1113
@../$(CPROVER_DIR)/regression/test.pl -e -p -c "../../../src/jbmc/jbmc --validate-goto-model --validate-ssa-equation --symex-driven-lazy-loading" -X symex-driven-lazy-loading-expected-failure -CF -s symex-driven-loading
1214

1315
testall:
1416
@../$(CPROVER_DIR)/regression/test.pl -e -p -c "../../../src/jbmc/jbmc --validate-goto-model --validate-ssa-equation" -CFTK
17+
@../$(CPROVER_DIR)/regression/test.pl -e -p -c "../../../src/jbmc/jbmc --validate-goto-model --validate-ssa-equation --max-intermediate-string-length 100 --use-fixed-size-arrays-for-bounded-strings --no-array-field-sensitivity" -CFTK -X limited-size-strings-expected-failure -s fixed-size-strings
1518
@../$(CPROVER_DIR)/regression/test.pl -e -p -c "../../../src/jbmc/jbmc --validate-goto-model --validate-ssa-equation --symex-driven-lazy-loading" -X symex-driven-lazy-loading-expected-failure -CFTK -s symex-driven-loading
1619

1720
tests.log: ../$(CPROVER_DIR)/regression/test.pl
1821
@../$(CPROVER_DIR)/regression/test.pl -e -p -c "../../../src/jbmc/jbmc --validate-goto-model --validate-ssa-equation"
22+
@../$(CPROVER_DIR)/regression/test.pl -e -p -c "../../../src/jbmc/jbmc --validate-goto-model --validate-ssa-equation --max-intermediate-string-length 100 --use-fixed-size-arrays-for-bounded-strings --no-array-field-sensitivity" -X limited-size-strings-expected-failure -s fixed-size-strings
1923
@../$(CPROVER_DIR)/regression/test.pl -e -p -c "../../../src/jbmc/jbmc --validate-goto-model --validate-ssa-equation --symex-driven-lazy-loading" -X symex-driven-lazy-loading-expected-failure -s symex-driven-loading
2024

2125
show:

Diff for: jbmc/src/java_bytecode/java_bytecode_language.cpp

+10
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,16 @@ java_bytecode_language_optionst::java_bytecode_language_optionst(
261261
void java_bytecode_languaget::set_language_options(const optionst &options)
262262
{
263263
object_factory_parameters.set(options);
264+
if(options.is_set("max-intermediate-string-length"))
265+
{
266+
string_preprocess.set_max_intermediate_string_length(
267+
options.get_unsigned_int_option("max-intermediate-string-length"));
268+
}
269+
if(options.is_set("use-fixed-size-arrays-for-bounded-strings"))
270+
{
271+
string_preprocess.set_use_fixed_size_arrays_for_bounded_strings(true);
272+
}
273+
264274
language_options = java_bytecode_language_optionst{options, *this};
265275
const auto &new_points = build_extra_entry_points(options);
266276
language_options->extra_methods.insert(

Diff for: jbmc/src/java_bytecode/java_object_factory.cpp

+12-2
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,9 @@ static irep_idt integer_interval_to_string(const integer_intervalt &interval)
327327
/// data array)
328328
/// \param min_nondet_string_length: minimum length of strings to initialize
329329
/// \param max_nondet_string_length: maximum length of strings to initialize
330+
/// \param use_fixed_size_array_for_bounded_string: if true, allocate a fixed
331+
// size array when max_nondet_string_length is set and reasonably small
332+
// (currently hard-coded to 256 chars)
330333
/// \param loc: location in the source
331334
/// \param function_id: function ID to associate with auxiliary variables
332335
/// \param symbol_table: the symbol table
@@ -362,6 +365,7 @@ void initialize_nondet_string_fields(
362365
code_blockt &code,
363366
const std::size_t &min_nondet_string_length,
364367
const std::size_t &max_nondet_string_length,
368+
const bool use_fixed_size_array_for_bounded_string,
365369
const source_locationt &loc,
366370
const irep_idt &function_id,
367371
symbol_table_baset &symbol_table,
@@ -413,8 +417,13 @@ void initialize_nondet_string_fields(
413417
code_assumet(binary_relation_exprt(length_expr, ID_le, max_length)));
414418
}
415419

416-
const exprt data_expr =
417-
make_nondet_infinite_char_array(symbol_table, loc, function_id, code);
420+
const exprt data_expr = make_nondet_char_array(
421+
symbol_table,
422+
loc,
423+
function_id,
424+
code,
425+
use_fixed_size_array_for_bounded_string ? max_nondet_string_length
426+
: optionalt<size_t>{});
418427
struct_expr.operands()[struct_type.component_number("length")] = length_expr;
419428

420429
const address_of_exprt array_pointer(
@@ -832,6 +841,7 @@ void java_object_factoryt::gen_nondet_struct_init(
832841
assignments,
833842
object_factory_parameters.min_nondet_string_length,
834843
object_factory_parameters.max_nondet_string_length,
844+
object_factory_parameters.use_fixed_size_arrays_for_bounded_strings,
835845
location,
836846
object_factory_parameters.function_id,
837847
symbol_table,

Diff for: jbmc/src/java_bytecode/java_string_library_preprocess.cpp

+25-8
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ Date: April 2017
1717
/// java.lang.StringBuilder, java.lang.StringBuffer.
1818

1919
#include <goto-programs/class_identifier.h>
20+
#include <solvers/strings/max_concrete_char_array.h>
2021
#include <util/allocate_objects.h>
2122
#include <util/arith_tools.h>
2223
#include <util/c_types.h>
@@ -493,8 +494,21 @@ refined_string_exprt java_string_library_preprocesst::make_nondet_string_expr(
493494
const side_effect_expr_nondett nondet_length(str.length().type(), loc);
494495
code.add(code_assignt(str.length(), nondet_length), loc);
495496

496-
const exprt nondet_array_expr =
497-
make_nondet_infinite_char_array(symbol_table, loc, function_id, code);
497+
const exprt nondet_array_expr = make_nondet_char_array(
498+
symbol_table,
499+
loc,
500+
function_id,
501+
code,
502+
use_fixed_size_arrays_for_bounded_strings ? max_intermediate_string_length
503+
: optionalt<size_t>{});
504+
505+
if(max_intermediate_string_length)
506+
{
507+
code.add(code_assumet(binary_relation_exprt(
508+
str.length(),
509+
ID_le,
510+
from_integer(*max_intermediate_string_length, java_int_type()))));
511+
}
498512

499513
const address_of_exprt array_pointer(
500514
index_exprt(nondet_array_expr, from_integer(0, java_int_type())));
@@ -576,23 +590,26 @@ codet java_string_library_preprocesst::code_return_function_application(
576590
make_function_application(function_id, arguments, type, symbol_table));
577591
}
578592

579-
/// Declare a fresh symbol of type array of character with infinite size.
593+
/// Declare a fresh symbol of type array of characters suitable for a string
594+
/// of the given maximum length
580595
/// \param symbol_table: the symbol table
581596
/// \param loc: source location
582597
/// \param function_id: name of the function containing the array
583598
/// \param [out] code: code block where the declaration gets added
599+
/// \param max_length: maximum string length
584600
/// \return created symbol expression
585-
exprt make_nondet_infinite_char_array(
601+
exprt make_nondet_char_array(
586602
symbol_table_baset &symbol_table,
587603
const source_locationt &loc,
588604
const irep_idt &function_id,
589-
code_blockt &code)
605+
code_blockt &code,
606+
optionalt<std::size_t> max_length)
590607
{
591-
const array_typet array_type(
592-
java_char_type(), infinity_exprt(java_int_type()));
608+
const array_typet array_type =
609+
make_char_array_type(java_char_type(), java_int_type(), max_length);
593610
const symbolt data_sym = fresh_java_symbol(
594611
pointer_type(array_type),
595-
"nondet_infinite_array_pointer",
612+
"nondet_array_pointer",
596613
loc,
597614
function_id,
598615
symbol_table);

Diff for: jbmc/src/java_bytecode/java_string_library_preprocess.h

+19-2
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,15 @@ class java_string_library_preprocesst:public messaget
4444

4545
void initialize_known_type_table();
4646
void initialize_conversion_table();
47+
void set_max_intermediate_string_length(
48+
optionalt<std::size_t> max_intermediate_string_length_)
49+
{
50+
this->max_intermediate_string_length = max_intermediate_string_length_;
51+
}
52+
void set_use_fixed_size_arrays_for_bounded_strings(bool value)
53+
{
54+
use_fixed_size_arrays_for_bounded_strings = value;
55+
}
4756

4857
bool implements_function(const irep_idt &function_id) const;
4958
void get_all_function_names(std::unordered_set<irep_idt> &methods) const;
@@ -145,6 +154,13 @@ class java_string_library_preprocesst:public messaget
145154
// A set tells us what java types should be considered as string objects
146155
std::unordered_set<irep_idt> string_types;
147156

157+
// Maximum length enforced on freshly-allocated strings
158+
optionalt<std::size_t> max_intermediate_string_length;
159+
160+
// If true, allocate fixed-size arrays to hold small (currently hard-coded
161+
// to 256 chars) bounded strings
162+
bool use_fixed_size_arrays_for_bounded_strings = false;
163+
148164
code_blockt make_float_to_string_code(
149165
const java_method_typet &type,
150166
const source_locationt &loc,
@@ -309,11 +325,12 @@ class java_string_library_preprocesst:public messaget
309325
symbol_table_baset &symbol_table);
310326
};
311327

312-
exprt make_nondet_infinite_char_array(
328+
exprt make_nondet_char_array(
313329
symbol_table_baset &symbol_table,
314330
const source_locationt &loc,
315331
const irep_idt &function_id,
316-
code_blockt &code);
332+
code_blockt &code,
333+
optionalt<std::size_t> max_length);
317334

318335
void add_pointer_to_array_association(
319336
const exprt &pointer,

Diff for: jbmc/src/jbmc/jbmc_parse_options.cpp

+13
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,16 @@ void jbmc_parse_optionst::get_command_line_options(optionst &options)
299299
options.set_option("refine-arithmetic", true);
300300
}
301301

302+
if(cmdline.isset("max-intermediate-string-length"))
303+
{
304+
options.set_option(
305+
"max-intermediate-string-length",
306+
cmdline.get_value("max-intermediate-string-length"));
307+
}
308+
309+
if(cmdline.isset("use-fixed-size-arrays-for-bounded-strings"))
310+
options.set_option("use-fixed-size-arrays-for-bounded-strings", true);
311+
302312
if(cmdline.isset("no-refine-strings"))
303313
options.set_option("refine-strings", false);
304314

@@ -457,6 +467,9 @@ void jbmc_parse_optionst::get_command_line_options(optionst &options)
457467

458468
if(cmdline.isset("show-goto-symex-steps"))
459469
options.set_option("show-goto-symex-steps", true);
470+
471+
if(!string_solver_options_valid(options, log))
472+
exit(CPROVER_EXIT_USAGE_ERROR);
460473
}
461474

462475
/// invoke main modules

Diff for: jbmc/unit/java_bytecode/java_object_factory/gen_nondet_string_init.cpp

+6-6
Original file line numberDiff line numberDiff line change
@@ -89,20 +89,20 @@ SCENARIO(
8989
"tmp_object_factory = NONDET(int);",
9090
CPROVER_PREFIX "assume(tmp_object_factory >= 0);",
9191
CPROVER_PREFIX "assume(tmp_object_factory <= 20);",
92-
"char (*nondet_infinite_array_pointer)[INFINITY()];",
93-
"nondet_infinite_array_pointer = "
92+
"char (*nondet_array_pointer)[INFINITY()];",
93+
"nondet_array_pointer = "
9494
"ALLOCATE(char [INFINITY()], INFINITY(), false);",
95-
"*nondet_infinite_array_pointer = NONDET(char [INFINITY()]);",
95+
"*nondet_array_pointer = NONDET(char [INFINITY()]);",
9696
"int return_array;",
9797
"return_array = cprover_associate_array_to_pointer_func"
98-
"(*nondet_infinite_array_pointer, *nondet_infinite_array_pointer);",
98+
"(*nondet_array_pointer, *nondet_array_pointer);",
9999
"int return_array;",
100100
"return_array = cprover_associate_length_to_array_func"
101-
"(*nondet_infinite_array_pointer, tmp_object_factory);",
101+
"(*nondet_array_pointer, tmp_object_factory);",
102102
"arg = { [email protected]={ .@class_identifier"
103103
"=\"java::java.lang.String\" },"
104104
" .length=tmp_object_factory, "
105-
".data=*nondet_infinite_array_pointer };"};
105+
".data=*nondet_array_pointer };"};
106106
// clang-format on
107107

108108
for(std::size_t i = 0;

0 commit comments

Comments
 (0)