Philippe Mathieu-Daudé <[email protected]> writes:

> Hi,
>
> (now merged as commit b2c2d00f48cc5f4486cfba33b505ff86d79cb137)
>
> On 23/12/25 16:50, [email protected] wrote:
>> From: Sven Schnelle <[email protected]>
>> Signed-off-by: Sven Schnelle <[email protected]>
>> Reviewed-by: Helge Deller <[email protected]>
>> Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
>> Signed-off-by: Helge Deller <[email protected]>
>> ---
>> target/hppa/gdbstub.c | 62
> ++++++++++++++++++++++++++++---------------
>>   1 file changed, 41 insertions(+), 21 deletions(-)
>> diff --git a/target/hppa/gdbstub.c b/target/hppa/gdbstub.c
>> index 0daa52f7af..777f4a48b9 100644
>> --- a/target/hppa/gdbstub.c
>> +++ b/target/hppa/gdbstub.c
>> @@ -21,16 +21,25 @@
>> @@ -133,24 +142,35 @@ int hppa_cpu_gdb_read_register(CPUState *cs,
> GByteArray *mem_buf, int n)
>>           val = env->cr[30];
>>           break;
>>       case 64 ... 127:
>> - val = extract64(env->fr[(n - 64) / 2], (n & 1 ? 0 : 32), 32);
>> -        break;
>> -    default:
>> -        if (n < 128) {
>> -            val = 0;
>> +        if (hppa_is_pa20(env)) {
>> +            val = env->fr[n - 64];
>
> Coverity reports:
>
>>>>     CID 1645613:         Memory - illegal accesses  (OVERRUN)
>>>>     Overrunning array "env->fr" of 32 8-byte elements at element
>         index 32 (byte offset 263) using index "n - 64" (which
>        evaluates to 32).

Yes, there's indeed a check missing wether n is < 96. I'll submit a patch later.

Reply via email to