Effacer les filtres
Effacer les filtres

Why Code Prover cannot detect Out of bound array index?

3 vues (au cours des 30 derniers jours)
Tran Thang
Tran Thang le 28 Avr 2020
Modifié(e) : Anirban le 1 Juil 2022
Global variable u1g_icsin_EmVari = [0.. 8]
=> This maybe a Out of bounds array index but Code Prover didn't show any warning related to this problem. why?
(There is a Green warning: Non initialized variable u1g_icsin_EmVari, but not any warning related to Out of bound array index)

Réponse acceptée

Anirban
Anirban le 29 Avr 2020
Modifié(e) : Anirban le 1 Juil 2022
Hi Hong,
Please contact MathWorks Technical Support with a reproduction so that they can give you a specific diagnosis of the issue.
One possible explanation can be that this is a C++ project and the global array is "external" to the project. In other words, the file that defines the array (along with its size) has not been provided for the Polyspace analysis. For such "external" C++ arrays, since Code Prover does not know the size, by default, it does not show an Out of bounds array index (OBAI) check. You can use the option -consider-external-array-accesses-unsafe to see an orange OBAI check on this issue.
There can be many other reasons. Without some kind of a reproduction, it is difficult to tell.
PS. A more accurate answer is given in the last entry in this thread. Copying it here:
The Out of Bounds Array Index warning occurs when you read the memory location that is out of bounds (or possibly out of bounds). Just taking the address is not an issue per se.
  8 commentaires
Anirban
Anirban le 5 Mai 2020
Hi Hong,
At this point, maybe Technical Support can help better. But let me try one more thing. I looked at the code more carefully and might have an idea. Sorry for not suggesting this earlier.
In your example, you are just taking the address of an array element. Can you try to dereference that address? You should get an Illegally Dereferenced Pointer warning. Alternatively, instead of taking the address, try reading the value directly. You should get an Out of Bounds Array Index warning.
The Out of Bounds Array Index warning occurs when you read the memory location that is out of bounds (or possibly out of bounds). Just taking the address is not an issue per se.
Tran Thang
Tran Thang le 26 Mai 2020
Thank you very much.

Connectez-vous pour commenter.

Plus de réponses (0)

Produits


Version

R2019a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by