-4

out of bound write. there is an overrun error.

    > #define FLOORSNUMBER             128 
    > #define ILAFLOORSNUMBER          40
    > #else
    > #define ILAFLOORSNUMBER          40
    > 
    > uint8 downCallSide[ILAFLOORSNUMBER]; extern uint16  
    > callLightTimerAside[FLOORSNUMBER]; extern uint16  
    > callLightTimerBside[FLOORSNUMBER];



    for(i = 0;i <= FLOORSNUMBER;i++)
              {
                    
    **CID 18019 (#1 of 3): Out-of-bounds write (OVERRUN)
     overrun-local: Overrunning array ilaByPass.downCallSide of 40 bytes at byte offset 128 using index i (which evaluates to 128)**

ilaByPass.downCallSide[i] = OFFSTATE;
             
        #ifndef NA 
            
        **CID 17746 (#1 of 3): Out-of-bounds write (OVERRUN)**
        **overrun-local: Overrunning array callLightTimerAside of 128 2-byte elements at element index 128 (byte offset 257) using index i (which evaluates to 128).**

callLightTimerAside[i] = OFFSTATE;
                

i understand that there is an overrun when we try to downcallside[i] since the value of i goes up to 128 and the size of downcallside is only 40. how do i resolve it?

and

for callLightTimerAside[i], the size appears to be the same as the floornumber, but there is still an overrun.

  • Code is too incomplete and out of context. You haven't even told us what the code does. Please provide a complete [mre]. Please also take the [tour] and reivew [ask]. – kaylum Oct 07 '21 at 05:44

1 Answers1

0

This is some weird looking C. Not really sure what is going on, but

for(i = 0;i <= FLOORSNUMBER;i++)

This is almost certainly a mistake. You loop through indicies 0-128, while the arrays you declare are of length 128 with indicies 0-127. The 128th index does not exist.

Try

for (i = 0; i < FLOORSNUMBER; i++)
Ders
  • 1,068
  • 13
  • 16