提交 4a4cff58 编写于 作者: P Pavel Hrdina

cpu: fix possible crash in getModels

Commit 86a15a25 introduced a new cpu driver API 'getModels'. Public API
allow you to pass NULL for models to get only number of existing models.
However the new code will crash with segfault so we have to count with
the possibility that the user wants only the number.

There is also difference in order of the models gathered by this new API
as the old approach was inserting the elements to the end of the array
so we should use 'VIR_APPEND_ELEMENT'.
Signed-off-by: NPavel Hrdina <phrdina@redhat.com>
上级 48a05560
......@@ -666,11 +666,15 @@ ppcGetModels(char ***models)
model = map->models;
while (model != NULL) {
if (models) {
if (VIR_STRDUP(name, model->name) < 0)
goto error;
if (VIR_INSERT_ELEMENT(*models, 0, nmodels, name) < 0)
if (VIR_APPEND_ELEMENT(*models, nmodels, name) < 0)
goto error;
} else {
nmodels++;
}
model = model->next;
}
......@@ -681,7 +685,10 @@ ppcGetModels(char ***models)
return nmodels;
error:
if (models) {
virStringFreeList(*models);
*models = NULL;
}
nmodels = -1;
goto cleanup;
}
......
......@@ -2176,11 +2176,15 @@ x86GetModels(char ***models)
model = map->models;
while (model != NULL) {
if (models) {
if (VIR_STRDUP(name, model->name) < 0)
goto error;
if (VIR_INSERT_ELEMENT(*models, 0, nmodels, name) < 0)
if (VIR_APPEND_ELEMENT(*models, nmodels, name) < 0)
goto error;
} else {
nmodels++;
}
model = model->next;
}
......@@ -2188,7 +2192,10 @@ x86GetModels(char ***models)
return nmodels;
error:
if (models) {
virStringFreeList(*models);
*models = NULL;
}
return -1;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册