Account for alloca use when collecting interface addresses
diff mbox

Message ID mvm1txqogt2.fsf@hawking.suse.de
State New
Headers show

Commit Message

Andreas Schwab March 25, 2014, 7:53 a.m. UTC
"Joseph S. Myers" <joseph@codesourcery.com> writes:

> I'm seeing compilation warnings (we clearly need to move to a -Werror 
> default, I see a recent patch of mine introduced some as well...):
>
> ../sysdeps/unix/sysv/linux/check_pf.c:326:20: warning: 'in6ailist' may be used uninitialized in this function [-Wmaybe-uninitialized]

Thanks for catching that.  This is embarrassing.  I really need to
improve my testing, especially with the recent increase in warning spam.
How about this?

	* sysdeps/unix/sysv/linux/check_pf.c (make_request): Add out_fail2
	label to be used after in6ailist is initialized.
---
 sysdeps/unix/sysv/linux/check_pf.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

Comments

Joseph Myers March 25, 2014, 12:20 p.m. UTC | #1
On Tue, 25 Mar 2014, Andreas Schwab wrote:

> "Joseph S. Myers" <joseph@codesourcery.com> writes:
> 
> > I'm seeing compilation warnings (we clearly need to move to a -Werror 
> > default, I see a recent patch of mine introduced some as well...):
> >
> > ../sysdeps/unix/sysv/linux/check_pf.c:326:20: warning: 'in6ailist' may be used uninitialized in this function [-Wmaybe-uninitialized]
> 
> Thanks for catching that.  This is embarrassing.  I really need to
> improve my testing, especially with the recent increase in warning spam.
> How about this?
> 
> 	* sysdeps/unix/sysv/linux/check_pf.c (make_request): Add out_fail2
> 	label to be used after in6ailist is initialized.

Looks right to me.

Patch
diff mbox

diff --git a/sysdeps/unix/sysv/linux/check_pf.c b/sysdeps/unix/sysv/linux/check_pf.c
index 6d8468d..e6a12ed 100644
--- a/sysdeps/unix/sysv/linux/check_pf.c
+++ b/sysdeps/unix/sysv/linux/check_pf.c
@@ -182,10 +182,10 @@  make_request (int fd, pid_t pid)
 
       ssize_t read_len = TEMP_FAILURE_RETRY (__recvmsg (fd, &msg, 0));
       if (read_len < 0)
-	goto out_fail;
+	goto out_fail2;
 
       if (msg.msg_flags & MSG_TRUNC)
-	goto out_fail;
+	goto out_fail2;
 
       struct nlmsghdr *nlmh;
       for (nlmh = (struct nlmsghdr *) buf;
@@ -251,7 +251,7 @@  make_request (int fd, pid_t pid)
 		{
 		  newp = malloc (sizeof (*newp));
 		  if (newp == NULL)
-		    goto out_fail;
+		    goto out_fail2;
 		  newp->use_malloc = true;
 		}
 	      newp->info.flags = (((ifam->ifa_flags
@@ -289,7 +289,7 @@  make_request (int fd, pid_t pid)
       result = malloc (sizeof (*result)
 		       + in6ailistlen * sizeof (struct in6addrinfo));
       if (result == NULL)
-	goto out_fail;
+	goto out_fail2;
 
       result->timestamp = get_nl_timestamp ();
       result->usecnt = 2;
@@ -319,7 +319,7 @@  make_request (int fd, pid_t pid)
     free (buf);
   return result;
 
- out_fail:
+ out_fail2:
   while (in6ailist != NULL)
     {
       struct in6ailist *next = in6ailist->next;
@@ -327,6 +327,7 @@  make_request (int fd, pid_t pid)
 	free (in6ailist);
       in6ailist = next;
     }
+ out_fail:
   if (use_malloc)
     free (buf);
   return NULL;