qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PULL 0/1] Fix use-after-free errors in util/error.c
@ 2023-04-06 16:56 Stefan Berger
  2023-04-06 16:56 ` [PULL 1/1] util/error: Fix use-after-free errors reported by Coverity Stefan Berger
  2023-04-10 13:27 ` [PULL 0/1] Fix use-after-free errors in util/error.c Peter Maydell
  0 siblings, 2 replies; 3+ messages in thread
From: Stefan Berger @ 2023-04-06 16:56 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, Stefan Berger

Hello!

   This PR fixes use-after-free errors in util/error.c as reported by Coverity.

Regards,
   Stefan


The following changes since commit 60ca584b8af0de525656f959991a440f8c191f12:

  Merge tag 'pull-for-8.0-220323-1' of https://gitlab.com/stsquad/qemu into staging (2023-03-22 17:58:12 +0000)

are available in the Git repository at:

  https://github.com/stefanberger/qemu-tpm.git tags/pull_error_handle_fix_use_after_free.v1

for you to fetch changes up to cc40b8b8448de351f0d15412f20d428712b2e207:

  util/error: Fix use-after-free errors reported by Coverity (2023-04-06 12:38:42 -0400)

----------------------------------------------------------------
Stefan Berger (1):
      util/error: Fix use-after-free errors reported by Coverity

 util/error.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

-- 
2.39.1



^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PULL 1/1] util/error: Fix use-after-free errors reported by Coverity
  2023-04-06 16:56 [PULL 0/1] Fix use-after-free errors in util/error.c Stefan Berger
@ 2023-04-06 16:56 ` Stefan Berger
  2023-04-10 13:27 ` [PULL 0/1] Fix use-after-free errors in util/error.c Peter Maydell
  1 sibling, 0 replies; 3+ messages in thread
From: Stefan Berger @ 2023-04-06 16:56 UTC (permalink / raw)
  To: qemu-devel
  Cc: peter.maydell, Stefan Berger, Philippe Mathieu-Daudé,
	Marc-André Lureau

Fix use-after-free errors in the code path that called error_handle(). A
call to error_handle() will now either free the passed Error 'err' or
assign it to '*errp' if '*errp' is currently NULL. This ensures that 'err'
either has been freed or is assigned to '*errp' if this function returns.
Adjust the two callers of this function to not assign the 'err' to '*errp'
themselves, since this is now handled by error_handle().

Fixes: commit 3ffef1a55ca3 ("error: add global &error_warn destination")
Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-id: 20230406154347.4100700-1-stefanb@linux.ibm.com
---
 util/error.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/util/error.c b/util/error.c
index 5537245da6..e5e247209a 100644
--- a/util/error.c
+++ b/util/error.c
@@ -46,6 +46,10 @@ static void error_handle(Error **errp, Error *err)
     }
     if (errp == &error_warn) {
         warn_report_err(err);
+    } else if (errp && !*errp) {
+        *errp = err;
+    } else {
+        error_free(err);
     }
 }
 
@@ -76,7 +80,6 @@ static void error_setv(Error **errp,
     err->func = func;
 
     error_handle(errp, err);
-    *errp = err;
 
     errno = saved_errno;
 }
@@ -289,11 +292,6 @@ void error_propagate(Error **dst_errp, Error *local_err)
         return;
     }
     error_handle(dst_errp, local_err);
-    if (dst_errp && !*dst_errp) {
-        *dst_errp = local_err;
-    } else {
-        error_free(local_err);
-    }
 }
 
 void error_propagate_prepend(Error **dst_errp, Error *err,
-- 
2.39.1



^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PULL 0/1] Fix use-after-free errors in util/error.c
  2023-04-06 16:56 [PULL 0/1] Fix use-after-free errors in util/error.c Stefan Berger
  2023-04-06 16:56 ` [PULL 1/1] util/error: Fix use-after-free errors reported by Coverity Stefan Berger
@ 2023-04-10 13:27 ` Peter Maydell
  1 sibling, 0 replies; 3+ messages in thread
From: Peter Maydell @ 2023-04-10 13:27 UTC (permalink / raw)
  To: Stefan Berger; +Cc: qemu-devel

On Thu, 6 Apr 2023 at 17:56, Stefan Berger <stefanb@linux.ibm.com> wrote:
>
> Hello!
>
>    This PR fixes use-after-free errors in util/error.c as reported by Coverity.
>
> Regards,
>    Stefan
>
>
> The following changes since commit 60ca584b8af0de525656f959991a440f8c191f12:
>
>   Merge tag 'pull-for-8.0-220323-1' of https://gitlab.com/stsquad/qemu into staging (2023-03-22 17:58:12 +0000)
>
> are available in the Git repository at:
>
>   https://github.com/stefanberger/qemu-tpm.git tags/pull_error_handle_fix_use_after_free.v1
>
> for you to fetch changes up to cc40b8b8448de351f0d15412f20d428712b2e207:
>
>   util/error: Fix use-after-free errors reported by Coverity (2023-04-06 12:38:42 -0400)
>
> ----------------------------------------------------------------
> Stefan Berger (1):
>       util/error: Fix use-after-free errors reported by Coverity


Applied, thanks.

Please update the changelog at https://wiki.qemu.org/ChangeLog/8.0
for any user-visible changes.

-- PMM


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2023-04-10 13:28 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-04-06 16:56 [PULL 0/1] Fix use-after-free errors in util/error.c Stefan Berger
2023-04-06 16:56 ` [PULL 1/1] util/error: Fix use-after-free errors reported by Coverity Stefan Berger
2023-04-10 13:27 ` [PULL 0/1] Fix use-after-free errors in util/error.c Peter Maydell

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).