mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-10-07 03:29:37 +00:00
qom: Fix class cast of NULL classes
Its clear from the implementation that class casting is supposed to work with a NULL class argument. Guard all dereferences of the class argument against NULL accordingly. Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> Message-id: 94cd5ba46b74eea289a7e582635820c1c54e66fa.1371546907.git.peter.crosthwaite@xilinx.com Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
c1b71b0c03
commit
9d6a3d58e4
|
@ -531,14 +531,14 @@ ObjectClass *object_class_dynamic_cast_assert(ObjectClass *class,
|
||||||
#ifdef CONFIG_QOM_CAST_DEBUG
|
#ifdef CONFIG_QOM_CAST_DEBUG
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < OBJECT_CLASS_CAST_CACHE; i++) {
|
for (i = 0; class && i < OBJECT_CLASS_CAST_CACHE; i++) {
|
||||||
if (class->cast_cache[i] == typename) {
|
if (class->cast_cache[i] == typename) {
|
||||||
ret = class;
|
ret = class;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
if (!class->interfaces) {
|
if (!class || !class->interfaces) {
|
||||||
return class;
|
return class;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -551,7 +551,7 @@ ObjectClass *object_class_dynamic_cast_assert(ObjectClass *class,
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_QOM_CAST_DEBUG
|
#ifdef CONFIG_QOM_CAST_DEBUG
|
||||||
if (ret == class) {
|
if (class && ret == class) {
|
||||||
for (i = 1; i < OBJECT_CLASS_CAST_CACHE; i++) {
|
for (i = 1; i < OBJECT_CLASS_CAST_CACHE; i++) {
|
||||||
class->cast_cache[i - 1] = class->cast_cache[i];
|
class->cast_cache[i - 1] = class->cast_cache[i];
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue