Message ID | 20210820165650.2839-1-peter.maydell@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | target/i386: Fix memory leak in sev_read_file_base64() | expand |
On 8/20/21 6:56 PM, Peter Maydell wrote: > In sev_read_file_base64() we call g_file_get_contents(), which > allocates memory for the file contents. We then base64-decode the > contents (which allocates another buffer for the decoded data), but > forgot to free the memory for the original file data. > > Use g_autofree to ensure that the file data is freed. > > Fixes: Coverity CID 1459997 > Signed-off-by: Peter Maydell <peter.maydell@linaro.org> > --- > Tested with 'make/make check' only... > > target/i386/sev.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Ping? thanks -- PMM On Fri, 20 Aug 2021 at 17:56, Peter Maydell <peter.maydell@linaro.org> wrote: > > In sev_read_file_base64() we call g_file_get_contents(), which > allocates memory for the file contents. We then base64-decode the > contents (which allocates another buffer for the decoded data), but > forgot to free the memory for the original file data. > > Use g_autofree to ensure that the file data is freed. > > Fixes: Coverity CID 1459997 > Signed-off-by: Peter Maydell <peter.maydell@linaro.org> > --- > Tested with 'make/make check' only... > > target/i386/sev.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/target/i386/sev.c b/target/i386/sev.c > index 83df8c09f6a..1e7833da1ab 100644 > --- a/target/i386/sev.c > +++ b/target/i386/sev.c > @@ -565,7 +565,7 @@ static int > sev_read_file_base64(const char *filename, guchar **data, gsize *len) > { > gsize sz; > - gchar *base64; > + g_autofree gchar *base64 = NULL; > GError *error = NULL; > > if (!g_file_get_contents(filename, &base64, &sz, &error)) { > -- > 2.20.1 >
On 20/08/21 19:05, Philippe Mathieu-Daudé wrote: > On 8/20/21 6:56 PM, Peter Maydell wrote: >> In sev_read_file_base64() we call g_file_get_contents(), which >> allocates memory for the file contents. We then base64-decode the >> contents (which allocates another buffer for the decoded data), but >> forgot to free the memory for the original file data. >> >> Use g_autofree to ensure that the file data is freed. >> >> Fixes: Coverity CID 1459997 >> Signed-off-by: Peter Maydell <peter.maydell@linaro.org> >> --- >> Tested with 'make/make check' only... >> >> target/i386/sev.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) > > Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> > Queued, thanks. Paolo
diff --git a/target/i386/sev.c b/target/i386/sev.c index 83df8c09f6a..1e7833da1ab 100644 --- a/target/i386/sev.c +++ b/target/i386/sev.c @@ -565,7 +565,7 @@ static int sev_read_file_base64(const char *filename, guchar **data, gsize *len) { gsize sz; - gchar *base64; + g_autofree gchar *base64 = NULL; GError *error = NULL; if (!g_file_get_contents(filename, &base64, &sz, &error)) {
In sev_read_file_base64() we call g_file_get_contents(), which allocates memory for the file contents. We then base64-decode the contents (which allocates another buffer for the decoded data), but forgot to free the memory for the original file data. Use g_autofree to ensure that the file data is freed. Fixes: Coverity CID 1459997 Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- Tested with 'make/make check' only... target/i386/sev.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)