diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2018-02-20 11:52:24 +0000 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2018-02-20 11:52:24 +0000 |
commit | b487e2b2ff6e9fff8a45a9600d6de3a7bf82666a (patch) | |
tree | 11374b66b54311254d563eb0c4b66de7dc449ac0 | |
parent | f4718c033bfef80933bf3d1d5d6d35f8fae8b11d (diff) | |
parent | 6ce7177ae2e547999ef9e6f467415963991e28da (diff) |
Merge remote-tracking branch 'remotes/gkurz/tags/for-upstream' into staging
Fix memory leak in synth backend.
# gpg: Signature made Mon 19 Feb 2018 17:29:49 GMT
# gpg: using RSA key 71D4D5E5822F73D6
# gpg: Good signature from "Greg Kurz <groug@kaod.org>"
# gpg: aka "Gregory Kurz <gregory.kurz@free.fr>"
# gpg: aka "[jpeg image of size 3330]"
# Primary key fingerprint: B482 8BAF 9431 40CE F2A3 4910 71D4 D5E5 822F 73D6
* remotes/gkurz/tags/for-upstream:
9p: fix leak in synth_name_to_path()
9p: v9fs_path_copy() readability
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rw-r--r-- | hw/9pfs/9p-synth.c | 1 | ||||
-rw-r--r-- | hw/9pfs/9p.c | 9 | ||||
-rw-r--r-- | hw/9pfs/9p.h | 2 |
3 files changed, 6 insertions, 6 deletions
diff --git a/hw/9pfs/9p-synth.c b/hw/9pfs/9p-synth.c index 18082dffe8..54239c9bbf 100644 --- a/hw/9pfs/9p-synth.c +++ b/hw/9pfs/9p-synth.c @@ -495,6 +495,7 @@ static int synth_name_to_path(FsContext *ctx, V9fsPath *dir_path, } out: /* Copy the node pointer to fid */ + g_free(target->data); target->data = g_memdup(&node, sizeof(void *)); target->size = sizeof(void *); return 0; diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c index 85a1ed8171..48fa48e720 100644 --- a/hw/9pfs/9p.c +++ b/hw/9pfs/9p.c @@ -190,12 +190,11 @@ v9fs_path_sprintf(V9fsPath *path, const char *fmt, ...) va_end(ap); } -void v9fs_path_copy(V9fsPath *lhs, V9fsPath *rhs) +void v9fs_path_copy(V9fsPath *dst, const V9fsPath *src) { - v9fs_path_free(lhs); - lhs->data = g_malloc(rhs->size); - memcpy(lhs->data, rhs->data, rhs->size); - lhs->size = rhs->size; + v9fs_path_free(dst); + dst->size = src->size; + dst->data = g_memdup(src->data, src->size); } int v9fs_name_to_path(V9fsState *s, V9fsPath *dirpath, diff --git a/hw/9pfs/9p.h b/hw/9pfs/9p.h index 5ced427d86..bad8ee719c 100644 --- a/hw/9pfs/9p.h +++ b/hw/9pfs/9p.h @@ -343,7 +343,7 @@ void coroutine_fn v9fs_reclaim_fd(V9fsPDU *pdu); void v9fs_path_init(V9fsPath *path); void v9fs_path_free(V9fsPath *path); void v9fs_path_sprintf(V9fsPath *path, const char *fmt, ...); -void v9fs_path_copy(V9fsPath *lhs, V9fsPath *rhs); +void v9fs_path_copy(V9fsPath *dst, const V9fsPath *src); int v9fs_name_to_path(V9fsState *s, V9fsPath *dirpath, const char *name, V9fsPath *path); int v9fs_device_realize_common(V9fsState *s, const V9fsTransport *t, |