Am 30.03.2013 um 13:38 hat Wenchao Xia geschrieben: > δΊ 2013-3-30 7:04, Eric Blake ει: > >On 03/22/2013 08:19 AM, Wenchao Xia wrote: > >> This function will simply call qmp interface qmp_query_snapshots() > >>added in last commit and then dump information in monitor console. > >> To get snapshot info, Now qemu and qemu-img both call block layer > >>function bdrv_query_snapshot_info_list() in their calling path, and > >>then they just translate the qmp object got to strings in stdout or > >>monitor console. > >> > >>Signed-off-by: Wenchao Xia <xiaw...@linux.vnet.ibm.com> > >>--- > >> hmp.c | 42 ++++++++++++++++++++++++++++++++++++++++++ > >> hmp.h | 1 + > >> 2 files changed, 43 insertions(+), 0 deletions(-) > >> > >>diff --git a/hmp.c b/hmp.c > >>index b0a861c..c475d65 100644 > >>--- a/hmp.c > >>+++ b/hmp.c > >>@@ -651,6 +651,48 @@ void hmp_info_tpm(Monitor *mon, const QDict *qdict) > >> qapi_free_TPMInfoList(info_list); > >> } > >> > >>+/* assume list is valid */ > >>+static void monitor_dump_snapshotinfolist(Monitor *mon, SnapshotInfoList > >>*list) > >>+{ > >>+ SnapshotInfoList *elem; > >>+ char buf[256]; > >>+ > >>+ monitor_printf(mon, "%s\n", bdrv_snapshot_dump(buf, sizeof(buf), > >>NULL)); > > > >Are you sure that won't ever be truncated? I'm pretty sure that I could > >come up with a scenario where I cause bdrv_snapshot_dump() to want to > >output more than 256 bytes of details. > > > I hope not use dynamic buff for strings, how about check it as > following: > > char buf[254] = 0; > monitor_printf(mon, "%s\n", bdrv_snapshot_dump(buf, sizeof(buf), NULL)); > if (buf[254]) { > monitor_printf(mon, "'string truncated'"); > }
About as useless as the truncated string alone. That something is missing will be noticed by the user; the fix isn't to tell him that the output is broken, but to give the full output. Kevin