From de17028a08adadfa4ebaa48314a25870c370c403 Mon Sep 17 00:00:00 2001 From: Ruslan Kuprieiev Date: Tue, 21 Jul 2015 13:27:00 +0300 Subject: [PATCH] libcriu: criu_init_opts: don't leak on rpc and opts Reported-by: Andrew Vagin Signed-off-by: Ruslan Kuprieiev Signed-off-by: Pavel Emelyanov --- lib/criu.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/criu.c b/lib/criu.c index ffa161dc3..be848bba1 100644 --- a/lib/criu.c +++ b/lib/criu.c @@ -61,8 +61,13 @@ int criu_local_init_opts(criu_opts **o) opts = *o; - if (opts && opts->rpc) - criu_opts__free_unpacked(opts->rpc, NULL); + if (opts) { + if (opts->rpc) + criu_opts__free_unpacked(opts->rpc, NULL); + + free(opts); + opts = NULL; + } rpc = malloc(sizeof(CriuOpts)); if (rpc == NULL) { @@ -75,6 +80,7 @@ int criu_local_init_opts(criu_opts **o) opts = malloc(sizeof(criu_opts)); if (opts == NULL) { perror("Can't allocate memory for criu opts"); + criu_opts__free_unpacked(rpc, NULL); return -1; }