diff options
author | Ildar Isaev <ild@inbox.ru> | 2015-03-04 17:09:46 +0300 |
---|---|---|
committer | Andreas Färber <afaerber@suse.de> | 2015-11-18 21:11:55 +0100 |
commit | 3b6ca4022d150ad273d4cd9556c2f4873389f965 (patch) | |
tree | e419c8498dc1b70f648d22a8131c3b38c7917175 | |
parent | 74fcbd22d20a2fbc1a47a7b00cce5bf98fd7be5f (diff) |
qdev: Change Property::offset field to ptrdiff_t type
Property::offset field is calculated as a diff between two pointers:
arrayprop->prop.offset = eltptr - (void *)dev;
If offset is declared as int, this subtraction can cause type overflow,
thus leading to failure of the subsequent assertion:
assert(qdev_get_prop_ptr(dev, &arrayprop->prop) == eltptr);
So ptrdiff_t should be used instead.
Signed-off-by: Ildar Isaev <ild@inbox.ru>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Andreas Färber <afaerber@suse.de>
-rw-r--r-- | include/hw/qdev-core.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h index e6dbde42c4..c537969f4e 100644 --- a/include/hw/qdev-core.h +++ b/include/hw/qdev-core.h @@ -237,7 +237,7 @@ struct BusState { struct Property { const char *name; PropertyInfo *info; - int offset; + ptrdiff_t offset; uint8_t bitnr; qtype_code qtype; int64_t defval; |