Re: [patch] target_read_string, potential memory leak.

Jim Blandy
2007-08-08T21:48:12Z

msnyder@sonic.net writes:
>> msnyder@sonic.net writes:
>>> OK -- it would be pretty stupid to call target_read_string without
>>> passing it a buffer, but if we're going to check it for null...
>>
>> I don't think the contract for target_read_string permits STRING to be
>> null. I think either the test should go, or we should add a
>> gdb_assert (string).
>
> Agreed. Thus?

Agreed, thus. :)

> Index: target.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/target.c,v
> retrieving revision 1.145
> diff -p -r1.145 target.c
> *** target.c 24 Jul 2007 12:49:24 -0000 1.145
> --- target.c 8 Aug 2007 18:31:57 -0000
> *************** target_read_string (CORE_ADDR memaddr, c
> *** 919,924 ****
> --- 919,926 ----
> char *bufptr;
> unsigned int nbytes_read = 0;
>
> + gdb_assert (string);
> +
> /* Small for testing. */
> buffer_allocated = 4;
> buffer = xmalloc (buffer_allocated);
> *************** target_read_string (CORE_ADDR memaddr, c
> *** 968,977 ****
> nbytes_read += tlen;
> }
> done:
> if (errnop != NULL)
> *errnop = errcode;
> - if (string != NULL)
> - *string = buffer;
> return nbytes_read;
> }
>
> --- 970,978 ----
> nbytes_read += tlen;
> }
> done:
> + *string = buffer;
> if (errnop != NULL)
> *errnop = errcode;
> return nbytes_read;
> }
>