Why Code Prover cannot detect Out of bound array index?
    3 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Tran Thang
 el 28 de Abr. de 2020
  
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)

0 comentarios
Respuesta aceptada
  Anirban
    
 el 29 de Abr. de 2020
        
      Editada: Anirban
    
 el 1 de Jul. de 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 comentarios
  Anirban
    
 el 5 de Mayo de 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.
Más respuestas (0)
Ver también
Categorías
				Más información sobre Run Settings en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



