DF-4661 / run.log
--- mode 1 (DF-4660) --- sizeof(struct ar2413State)=2000 offsetof(pcdacTable)=72 Bank1Data=328 vpdTable_I=1484 mode=1 numPdGainsUsed(ret)=4 minPower=0x0000 DF-4660 REPRODUCED: pPDADCValues write walked past pcdacTable[127]: first clobbered u16 cell 0 bytes past array end, last 79 bytes past (value 0x007f) => kk ran to 168 => intra-object heap OOB WRITE past pcdacTable[PWR_TABLE_SIZE_2413=128] into Bank data (reprogrammed to the radio at ar2413.c:206-210) --- mode 2 (DF-4661) --- mapped wild pages 0xa00490000 0x200402000, seeded 0x5A5A sizeof(struct ar2413State)=2000 offsetof(pcdacTable)=72 Bank1Data=328 vpdTable_I=1484 mode=2 numPdGainsUsed(ret)=0 minPower=0xd2e0 gainBoundaries[0] = 0x5a5a (== 0x5A5A => wild read at gb+0x1FFFFFFFE, ar2413.c:484, then written to TPCRG5 by ar2413SetPowerTable:595-600) pcdacTable[0] = 0x5a5a (== 0x5A5A => wild read at pcdacTable+0x1FFFFFFFE, ar2413.c:488, replicated across the pdadc table / 32 PHY reg writes) minPower out = 0xd2e0 (uninitialized Pmin_t2[0] stack read at ar2413.c:424; dataset carries no power data) DF-4661 REPRODUCED: uint32-underflow wild reads at ar2413.c:484/:488 + uninit stack read at :424 --- mode 3 (DF-4662) --- sizeof(struct ar2413State)=2000 offsetof(pcdacTable)=72 Bank1Data=328 vpdTable_I=1484 REPRODUCED: SIGSEGV si_addr=0x20040286a, expected wild address 0x20040286a (uint32 index wrap: element index 0xFFFFFFFF x sizeof(uint16_t)=2 => +0x1FFFFFFFE bytes = +8.59 GB) MATCH: wild OOB read proven (ar2413.c uint32 counter underflow) === repeat / variance === minPower out = 0xd3b0 (uninitialized Pmin_t2[0] stack read at ar2413.c:424; dataset carries no power data) minPower out = 0xd620 (uninitialized Pmin_t2[0] stack read at ar2413.c:424; dataset carries no power data) minPower out = 0xd370 (uninitialized Pmin_t2[0] stack read at ar2413.c:424; dataset carries no power data) => intra-object heap OOB WRITE past pcdacTable[PWR_TABLE_SIZE_2413=128] into Bank data (reprogrammed to the radio at ar2413.c:206-210) MATCH: wild OOB read proven (ar2413.c uint32 counter underflow)