3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-23 17:15:31 +00:00

fix a couple hundred deref-after-free bugs due to .c_str() on a temporary string

This commit is contained in:
Nuno Lopes 2020-07-11 20:24:45 +01:00
parent 48a9defb0d
commit 23e6adcad3
64 changed files with 248 additions and 229 deletions

View file

@ -42,7 +42,7 @@ void tst_expr_arith(unsigned num_files) {
std::ostringstream buffer;
buffer << "random_arith_" << i << ".smt2";
std::cout << buffer.str() << "\n";
std::ofstream file(buffer.str().c_str());
std::ofstream file(buffer.str());
pp.display_smt2(file, e.get());
file.close();
}
@ -85,7 +85,7 @@ void tst_expr_rand(unsigned num_files) {
std::ostringstream buffer;
buffer << "random_bv_" << i << ".smt2";
std::cout << buffer.str() << "\n";
std::ofstream file(buffer.str().c_str());
std::ofstream file(buffer.str());
pp.display_smt2(file, e.get());
file.close();

View file

@ -140,7 +140,7 @@ expr_ref hilbert_basis_validate::mk_validate(hilbert_basis& hb) {
name << "u" << i;
increments.push_back(tmp);
vars.push_back(var);
names.push_back(symbol(name.str().c_str()));
names.push_back(symbol(name.str()));
sorts.push_back(a.mk_int());
}
}

View file

@ -31,7 +31,7 @@ static void test1() {
for (unsigned i = 0; i < N; ++i) {
std::stringstream strm;
strm << "b" << i;
vars.push_back(m.mk_const(symbol(strm.str().c_str()), m.mk_bool_sort()));
vars.push_back(m.mk_const(symbol(strm.str()), m.mk_bool_sort()));
}
for (unsigned k = 1; k <= N; ++k) {
@ -112,7 +112,7 @@ static void test2() {
for (unsigned i = 0; i < N; ++i) {
std::stringstream strm;
strm << "b" << i;
vars.push_back(m.mk_const(symbol(strm.str().c_str()), m.mk_bool_sort()));
vars.push_back(m.mk_const(symbol(strm.str()), m.mk_bool_sort()));
}
for (unsigned coeff = 0; coeff < static_cast<unsigned>(1 << N); ++coeff) {
vector<rational> coeffs;
@ -181,7 +181,7 @@ static void test3() {
for (unsigned i = 0; i < N; ++i) {
std::stringstream strm;
strm << "b" << i;
vars.push_back(m.mk_const(symbol(strm.str().c_str()), m.mk_bool_sort()));
vars.push_back(m.mk_const(symbol(strm.str()), m.mk_bool_sort()));
}
for (unsigned coeff = 0; coeff < static_cast<unsigned>(1 << N); ++coeff) {
vector<rational> coeffs;

View file

@ -288,7 +288,7 @@ static void mk_var(unsigned x, app_ref& v) {
arith_util a(m);
std::ostringstream strm;
strm << "v" << x;
v = m.mk_const(symbol(strm.str().c_str()), a.mk_real());
v = m.mk_const(symbol(strm.str()), a.mk_real());
}
static void mk_term(vector<var_t> const& vars, rational const& coeff, app_ref& term) {

View file

@ -40,7 +40,7 @@ public:
for (unsigned i = 0; i < N; ++i) {
std::stringstream strm;
strm << "b" << i;
vars.push_back(m.mk_const(symbol(strm.str().c_str()), m.mk_bool_sort()));
vars.push_back(m.mk_const(symbol(strm.str()), m.mk_bool_sort()));
std::cout << "(declare-const " << strm.str() << " Bool)\n";
}
}