From: Luiz Capitulino Date: Thu, 26 Apr 2012 20:34:30 +0000 (-0300) Subject: hmp: fix bad value conversion for M type X-Git-Tag: TizenStudio_2.0_p2.3.2~208^2~4116^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=911628498cea6617243761babbbacaeb8b3a062a;p=sdk%2Femulator%2Fqemu.git hmp: fix bad value conversion for M type The M type converts from megabytes to bytes. However, the value can be negative before the conversion, which will lead to a flawed conversion. For example, this: (qemu) balloon -1000000000000011 (qemu) Just "works", but the value passed by the balloon command will be something else. This patch fixes this problem by requering a positive value before converting. There's really no reason to accept a negative value for the M type. Signed-off-by: Luiz Capitulino Reviewed-by: Eric Blake --- diff --git a/monitor.c b/monitor.c index bf60984..12a6fe2 100644 --- a/monitor.c +++ b/monitor.c @@ -89,8 +89,8 @@ * TODO lift the restriction * 'i' 32 bit integer * 'l' target long (32 or 64 bit) - * 'M' just like 'l', except in user mode the value is - * multiplied by 2^20 (think Mebibyte) + * 'M' Non-negative target long (32 or 64 bit), in user mode the + * value is multiplied by 2^20 (think Mebibyte) * 'o' octets (aka bytes) * user mode accepts an optional T, t, G, g, M, m, K, k * suffix, which multiplies the value by 2^40 for @@ -3622,6 +3622,10 @@ static const mon_cmd_t *monitor_parse_command(Monitor *mon, monitor_printf(mon, "integer is for 32-bit values\n"); goto fail; } else if (c == 'M') { + if (val < 0) { + monitor_printf(mon, "enter a positive value\n"); + goto fail; + } val <<= 20; } qdict_put(qdict, key, qint_from_int(val));