On 24.07.2017 17:08, Dr. David Alan Gilbert (git) wrote: > From: "Dr. David Alan Gilbert" <dgilb...@redhat.com> > > memsave and pmemsave only take 32bit size arguments in HMP at the > moment; let them take 64bit values. > > Reported-by: Pierre Kim <ad...@manateeshome.com> > Signed-off-by: Dr. David Alan Gilbert <dgilb...@redhat.com> > --- > hmp-commands.hx | 4 ++-- > hmp.c | 13 +++++++++++-- > 2 files changed, 13 insertions(+), 4 deletions(-) > > diff --git a/hmp-commands.hx b/hmp-commands.hx > index 1941e19932..ddf77ae7ac 100644 > --- a/hmp-commands.hx > +++ b/hmp-commands.hx > @@ -829,7 +829,7 @@ ETEXI > > { > .name = "memsave", > - .args_type = "val:l,size:i,filename:s", > + .args_type = "val:l,size:l,filename:s", > .params = "addr size file", > .help = "save to disk virtual memory dump starting at 'addr' > of size 'size'", > .cmd = hmp_memsave, > @@ -843,7 +843,7 @@ ETEXI > > { > .name = "pmemsave", > - .args_type = "val:l,size:i,filename:s", > + .args_type = "val:l,size:l,filename:s", > .params = "addr size file", > .help = "save to disk physical memory dump starting at 'addr' > of size 'size'", > .cmd = hmp_pmemsave, > diff --git a/hmp.c b/hmp.c > index bf1de747d5..5118896779 100644 > --- a/hmp.c > +++ b/hmp.c > @@ -1066,7 +1066,7 @@ void hmp_cpu(Monitor *mon, const QDict *qdict) > > void hmp_memsave(Monitor *mon, const QDict *qdict) > { > - uint32_t size = qdict_get_int(qdict, "size"); > + int64_t size = qdict_get_int(qdict, "size"); > const char *filename = qdict_get_str(qdict, "filename"); > uint64_t addr = qdict_get_int(qdict, "val"); > Error *err = NULL; > @@ -1076,6 +1076,10 @@ void hmp_memsave(Monitor *mon, const QDict *qdict) > monitor_printf(mon, "No CPU available\n"); > return; > } > + if (size <= 0) { > + monitor_printf(mon, "Invalid size\n"); > + return; > + } > > qmp_memsave(addr, size, filename, true, cpu_index, &err); > hmp_handle_error(mon, &err); > @@ -1083,11 +1087,16 @@ void hmp_memsave(Monitor *mon, const QDict *qdict) > > void hmp_pmemsave(Monitor *mon, const QDict *qdict) > { > - uint32_t size = qdict_get_int(qdict, "size"); > + int64_t size = qdict_get_int(qdict, "size"); > const char *filename = qdict_get_str(qdict, "filename"); > uint64_t addr = qdict_get_int(qdict, "val"); > Error *err = NULL; > > + if (size <= 0) { > + monitor_printf(mon, "Invalid size\n"); > + return; > + } > + > qmp_pmemsave(addr, size, filename, &err); > hmp_handle_error(mon, &err); > } >
Reviewed-by: Thomas Huth <th...@redhat.com>