[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-commits] [qemu/qemu] 922d42: json: Fix a memleak in parse_pair()
From: |
Peter Maydell |
Subject: |
[Qemu-commits] [qemu/qemu] 922d42: json: Fix a memleak in parse_pair() |
Date: |
Tue, 17 Nov 2020 13:21:13 -0800 |
Branch: refs/heads/staging
Home: https://github.com/qemu/qemu
Commit: 922d42bb0d08c154602dd9112da00d22d2b46579
https://github.com/qemu/qemu/commit/922d42bb0d08c154602dd9112da00d22d2b46579
Author: Alex Chen <alex.chen@huawei.com>
Date: 2020-11-17 (Tue, 17 Nov 2020)
Changed paths:
M qobject/json-parser.c
M tests/check-qjson.c
Log Message:
-----------
json: Fix a memleak in parse_pair()
In qobject_type(), NULL is returned when the 'QObject' returned from
parse_value() is not of QString type,
and this 'QObject' memory will leaked.
So we need to first cache the 'QObject' returned from parse_value(), and finally
free 'QObject' memory at the end of the function.
Also, we add a testcast about invalid dict key.
The memleak stack is as follows:
Direct leak of 32 byte(s) in 1 object(s) allocated from:
#0 0xfffe4b3c34fb in __interceptor_malloc (/lib64/libasan.so.4+0xd34fb)
#1 0xfffe4ae48aa3 in g_malloc (/lib64/libglib-2.0.so.0+0x58aa3)
#2 0xaaab3557d9f7 in qnum_from_int qemu/qobject/qnum.c:25
#3 0xaaab35584d23 in parse_literal qemu/qobject/json-parser.c:511
#4 0xaaab35584d23 in parse_value qemu/qobject/json-parser.c:554
#5 0xaaab35583d77 in parse_pair qemu/qobject/json-parser.c:270
#6 0xaaab355845db in parse_object qemu/qobject/json-parser.c:327
#7 0xaaab355845db in parse_value qemu/qobject/json-parser.c:546
#8 0xaaab35585b1b in json_parser_parse qemu/qobject/json-parser.c:580
#9 0xaaab35583703 in json_message_process_token
qemu/qobject/json-streamer.c:92
#10 0xaaab355ddccf in json_lexer_feed_char qemu/qobject/json-lexer.c:313
#11 0xaaab355de0eb in json_lexer_feed qemu/qobject/json-lexer.c:350
#12 0xaaab354aff67 in tcp_chr_read qemu/chardev/char-socket.c:525
#13 0xfffe4ae429db in g_main_context_dispatch
(/lib64/libglib-2.0.so.0+0x529db)
#14 0xfffe4ae42d8f (/lib64/libglib-2.0.so.0+0x52d8f)
#15 0xfffe4ae430df in g_main_loop_run (/lib64/libglib-2.0.so.0+0x530df)
#16 0xaaab34d70bff in iothread_run qemu/iothread.c:82
#17 0xaaab3559d71b in qemu_thread_start qemu/util/qemu-thread-posix.c:519
Fixes: 532fb5328473 ("qapi: Make more of qobject_to()")
Reported-by: Euler Robot <euler.robot@huawei.com>
Signed-off-by: Alex Chen <alex.chen@huawei.com>
Signed-off-by: Chen Qun <kuhn.chenqun@huawei.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20201113145525.85151-1-alex.chen@huawei.com>
[Commit message tweaked]
Commit: 84dae210506784945ec8342a613d7bd62ae6ec62
https://github.com/qemu/qemu/commit/84dae210506784945ec8342a613d7bd62ae6ec62
Author: Peter Maydell <peter.maydell@linaro.org>
Date: 2020-11-17 (Tue, 17 Nov 2020)
Changed paths:
M qobject/json-parser.c
M tests/check-qjson.c
Log Message:
-----------
Merge remote-tracking branch 'remotes/armbru/tags/pull-qobject-2020-11-17'
into staging
QObject patches patches for 2020-11-17
# gpg: Signature made Tue 17 Nov 2020 14:41:06 GMT
# gpg: using RSA key 354BC8B3D7EB2A6B68674E5F3870B400EB918653
# gpg: issuer "armbru@redhat.com"
# gpg: Good signature from "Markus Armbruster <armbru@redhat.com>" [full]
# gpg: aka "Markus Armbruster <armbru@pond.sub.org>" [full]
# Primary key fingerprint: 354B C8B3 D7EB 2A6B 6867 4E5F 3870 B400 EB91 8653
* remotes/armbru/tags/pull-qobject-2020-11-17:
json: Fix a memleak in parse_pair()
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Compare: https://github.com/qemu/qemu/compare/c446ac37b7e7...84dae2105067
- [Qemu-commits] [qemu/qemu] 922d42: json: Fix a memleak in parse_pair(),
Peter Maydell <=