/* * Copyright (c) 2017 - present Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. */ #include class int_vector { unsigned int _size; public: // FAILS TO RELATE output field _size to argument size, NEED STRONG UPDATE int_vector(int size): _size(size) {} // FAILS TO SET output field _size to 0 int_vector(): int_vector(0) {} void access_at(int i) { int* dummy_array = (int*)malloc(sizeof(int) * _size); int dummy_value = dummy_array[i]; free(dummy_array); } unsigned int size() { return _size; } void resize(int newsize) { _size = newsize; } }; void FN_my_vector_oob_Bad(int_vector& v) { unsigned int n = v.size(); v.access_at(n); } // We expect the error to be throw in FN_my_vector_oob_Bad already void FN_instantiate_my_vector_oob_Ok() { int_vector v; v.resize(42); FN_my_vector_oob_Bad(v); }