Hi! On Mon, 15 Aug 2011 22:10:07 +0200, Jonathan Neuschäfer <[email protected]> wrote: > * libshouldbeinlibc/localhost.c (localhost): assign the return value > of realloc to a temporary variable to avoid losing the old value of > buf in the case of realloc failing. > --- > libshouldbeinlibc/localhost.c | 21 ++++++++++++++------- > 1 files changed, 14 insertions(+), 7 deletions(-) > > diff --git a/libshouldbeinlibc/localhost.c b/libshouldbeinlibc/localhost.c > index f0c6754..f21f970 100644 > --- a/libshouldbeinlibc/localhost.c > +++ b/libshouldbeinlibc/localhost.c > @@ -39,18 +39,25 @@ localhost () > errno = 0; > > if (buf) { > + char *new; > buf_len += buf_len; > - buf = realloc (buf, buf_len); > + new = realloc (buf, buf_len); > + if (! new) > + {
Am I being dense (which is entirely possible), or did you mean to ``free
(buf)'' here, or what is the intent here?
> + errno = ENOMEM;
> + return 0;
> + }
> + else
> + buf = new;
> } else {
> buf_len = 128; /* Initial guess */
> buf = malloc (buf_len);
> + if (! buf)
> + {
> + errno = ENOMEM;
> + return 0;
> + }
> }
> -
> - if (! buf)
> - {
> - errno = ENOMEM;
> - return 0;
> - }
> } while ((gethostname(buf, buf_len) == 0 && !memchr (buf, '\0',
> buf_len))
> || errno == ENAMETOOLONG);
>
Grüße,
Thomas
pgpGZq7hAKeQO.pgp
Description: PGP signature
