[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: The patch of glibc which allows the user to override the pfinet serv

From: zhengda
Subject: Re: The patch of glibc which allows the user to override the pfinet server
Date: Wed, 13 Aug 2008 12:41:12 +0200
User-agent: Thunderbird (X11/20080707)

olafBuddenhagen@gmx.net wrote:

On Tue, Aug 12, 2008 at 08:05:49PM +0200, zhengda wrote:

+      char *name = NULL;

No need to initialize this -- the asprintf() will overwrite it anyways.
But isn't it always right to initialize a local variable to reduce the possibility of getting bugs?
+      if (__asprintf (&name, "SOCK_SERV_%d", domain) > 0)
+        {
+          np = getenv (name);
+          __free (name);
+        }

You need to check whether asprintf() returns an error code (-1), meaning
memory allocation failed, and handle it accordingly -- just like you
handled failure with the explicit malloc() in your original code.
as I understand from the manual of asprintf, asprintf always returns -1 if there is some error.

When successful, these functions return the number of bytes printed, just like sprintf(3). If memory allocation wasn't possible, or some other error occurs, these functions will return -1, and the contents of
      strp is undefined.

If asprintf() doesn't fail, the getenv() should be done unconditionally.

+          if (__asprintf (&name, "%s/%d", sock_servs, domain) > 0)
+              np = name;

I think you can print to np directly here...
I need to free the space afterwards.
If I use np directly, I'll not be able to figure out whether I should free the memory because np might point to the environment variable.

Zheng Da

reply via email to

[Prev in Thread] Current Thread [Next in Thread]