diff options
author | Luiz Capitulino <lcapitulino@redhat.com> | 2009-08-28 15:27:26 -0300 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2009-09-04 09:37:33 -0500 |
commit | 675ebef9e2801d4a61cbe1cbd54abe01a3b62122 (patch) | |
tree | 30e0c062eca6d63b0d02319fb50b81aeba1e1986 /monitor.c | |
parent | 53773581b8b84261508cfe5751b18f107db551d2 (diff) |
monitor: fail when 'i' type is greater than 32-bit
The 'i' argument type is for 32-bit only and most handlers
will use an 'int' to store its value.
It's better to fail gracefully when the user enters a value
greater than 32-bit than to get subtle casting bugs.
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Diffstat (limited to 'monitor.c')
-rw-r--r-- | monitor.c | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -2759,6 +2759,12 @@ static const mon_cmd_t *monitor_parse_command(Monitor *mon, } if (get_expr(mon, &val, &p)) goto fail; + /* Check if 'i' is greater than 32-bit */ + if ((c == 'i') && ((val >> 32) & 0xffffffff)) { + monitor_printf(mon, "\'%s\' has failed: ", cmdname); + monitor_printf(mon, "integer is for 32-bit values\n"); + goto fail; + } qdict_put(qdict, key, qint_from_int(val)); } break; |