From: "Seebs" <seebs@seebs.net>
To: "Damian Wrobel" <dwrobel@ertelnet.rybnik.pl>
Cc: openembedded-core@lists.openembedded.org
Subject: Re: [OE-core] [PATCH pseudo 4/4] Do not return address of local variable
Date: Tue, 27 Jul 2021 10:47:12 -0500 [thread overview]
Message-ID: <20210727104712.385ad146@seebsdell> (raw)
In-Reply-To: <20210727114906.191837-4-dwrobel@ertelnet.rybnik.pl>
On Tue, 27 Jul 2021 13:49:06 +0200
"Damian Wrobel" <dwrobel@ertelnet.rybnik.pl> wrote:
> Fixes the following warning:
> pseudo_client.c: In function ‘pseudo_client_op’:
> cc1: warning: function may return address of local variable
> [-Wreturn-local-addr] pseudo_client.c:1592:22: note: declared here
> 1592 | pseudo_msg_t msg = { .type = PSEUDO_MSG_OP };
> | ^~~
>
> Signed-off-by: Damian Wrobel <dwrobel@ertelnet.rybnik.pl>
> ---
> pseudo_client.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/pseudo_client.c b/pseudo_client.c
> index 2583bca..f1d09ff 100644
> --- a/pseudo_client.c
> +++ b/pseudo_client.c
> @@ -1889,7 +1889,7 @@ pseudo_client_op(pseudo_op_t op, int access,
> int fd, int dirfd, const char *path case OP_CHROOT:
> if (pseudo_client_chroot(path) == 0) {
> /* return a non-zero value to show
> non-failure */
> - result = &msg;
> + result = pseudo_msg_dup(&msg);
This is a memory leak.
That said, I have no idea how the underlying bug escaped notice all
this time, it's definitely a bug. I think it is actually safe to just
make msg be static, because pseudo_client_op is protected by a lock
and is never executed more than once at a time.
On reflection: I think the way it worked is that in that case, the
actual message isn't looked at, just checked for nullness, but this
is still undefined behavior because the result is a pointer to storage
after the storage's lifetime, and formally you can't even check those
for "is or isn't null".
-s
next prev parent reply other threads:[~2021-07-27 15:47 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-27 11:49 [PATCH pseudo 1/4] Remove -fno-strict-aliasing and -Wno-deprecated-declarations Damian Wrobel
2021-07-27 11:49 ` [PATCH pseudo 2/4] Do not pass null argument to pseudo_diag() Damian Wrobel
2021-07-27 15:48 ` [OE-core] " Seebs
2021-07-27 11:49 ` [PATCH pseudo 3/4] Use -pthread instead of -lpthread Damian Wrobel
2021-07-27 11:49 ` [PATCH pseudo 4/4] Do not return address of local variable Damian Wrobel
2021-07-27 15:47 ` Seebs [this message]
2021-07-27 16:30 ` [OE-core] " Damian Wrobel
2021-07-27 16:52 ` Seebs
2021-07-28 9:36 ` Damian Wrobel
2021-07-28 20:16 ` Seebs
2021-07-28 20:49 ` Andre McCurdy
2021-07-28 20:53 ` Seebs
2021-07-29 12:37 ` [OE-core] [PATCH pseudo 4/4] Do not return address of local variable - unverified Damian Wrobel
2021-07-29 15:08 ` Seebs
2021-07-27 15:49 ` [OE-core] [PATCH pseudo 1/4] Remove -fno-strict-aliasing and -Wno-deprecated-declarations Seebs
2021-07-27 16:35 ` Damian Wrobel
2021-07-27 16:46 ` Seebs
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210727104712.385ad146@seebsdell \
--to=seebs@seebs.net \
--cc=dwrobel@ertelnet.rybnik.pl \
--cc=openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.