mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
vbox: reject unknown flags
* src/vbox/vbox_driver.c (vboxOpenDummy): Reject unknown flags. * src/vbox/vbox_tmpl.c (vboxOpen, vboxDomainReboot) (vboxNetworkOpen, vboxNetworkGetXMLDesc, vboxStorageOpen) (vboxStorageVolCreateXML, vboxStorageVolDelete) (vboxStorageVolGetXMLDesc, vboxDomainScreenshot): Likewise.
This commit is contained in:
parent
2bcad36889
commit
8d173c47b7
@ -142,9 +142,12 @@ int vboxRegister(void) {
|
|||||||
|
|
||||||
static virDrvOpenStatus vboxOpenDummy(virConnectPtr conn,
|
static virDrvOpenStatus vboxOpenDummy(virConnectPtr conn,
|
||||||
virConnectAuthPtr auth ATTRIBUTE_UNUSED,
|
virConnectAuthPtr auth ATTRIBUTE_UNUSED,
|
||||||
unsigned int flags ATTRIBUTE_UNUSED) {
|
unsigned int flags)
|
||||||
|
{
|
||||||
uid_t uid = getuid();
|
uid_t uid = getuid();
|
||||||
|
|
||||||
|
virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR);
|
||||||
|
|
||||||
if (conn->uri == NULL ||
|
if (conn->uri == NULL ||
|
||||||
conn->uri->scheme == NULL ||
|
conn->uri->scheme == NULL ||
|
||||||
STRNEQ (conn->uri->scheme, "vbox") ||
|
STRNEQ (conn->uri->scheme, "vbox") ||
|
||||||
|
@ -961,10 +961,13 @@ static void vboxUninitialize(vboxGlobalData *data) {
|
|||||||
|
|
||||||
static virDrvOpenStatus vboxOpen(virConnectPtr conn,
|
static virDrvOpenStatus vboxOpen(virConnectPtr conn,
|
||||||
virConnectAuthPtr auth ATTRIBUTE_UNUSED,
|
virConnectAuthPtr auth ATTRIBUTE_UNUSED,
|
||||||
unsigned int flags ATTRIBUTE_UNUSED) {
|
unsigned int flags)
|
||||||
|
{
|
||||||
vboxGlobalData *data = NULL;
|
vboxGlobalData *data = NULL;
|
||||||
uid_t uid = getuid();
|
uid_t uid = getuid();
|
||||||
|
|
||||||
|
virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR);
|
||||||
|
|
||||||
if (conn->uri == NULL) {
|
if (conn->uri == NULL) {
|
||||||
conn->uri = xmlParseURI(uid ? "vbox:///session" : "vbox:///system");
|
conn->uri = xmlParseURI(uid ? "vbox:///session" : "vbox:///system");
|
||||||
if (conn->uri == NULL) {
|
if (conn->uri == NULL) {
|
||||||
@ -1637,7 +1640,8 @@ cleanup:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int vboxDomainReboot(virDomainPtr dom, unsigned int flags ATTRIBUTE_UNUSED) {
|
static int vboxDomainReboot(virDomainPtr dom, unsigned int flags)
|
||||||
|
{
|
||||||
VBOX_OBJECT_CHECK(dom->conn, int, -1);
|
VBOX_OBJECT_CHECK(dom->conn, int, -1);
|
||||||
IMachine *machine = NULL;
|
IMachine *machine = NULL;
|
||||||
vboxIID iid = VBOX_IID_INITIALIZER;
|
vboxIID iid = VBOX_IID_INITIALIZER;
|
||||||
@ -1646,6 +1650,8 @@ static int vboxDomainReboot(virDomainPtr dom, unsigned int flags ATTRIBUTE_UNUSE
|
|||||||
PRBool isAccessible = PR_FALSE;
|
PRBool isAccessible = PR_FALSE;
|
||||||
nsresult rc;
|
nsresult rc;
|
||||||
|
|
||||||
|
virCheckFlags(0, -1);
|
||||||
|
|
||||||
vboxIIDFromUUID(&iid, dom->uuid);
|
vboxIIDFromUUID(&iid, dom->uuid);
|
||||||
rc = VBOX_OBJECT_GET_MACHINE(iid.value, &machine);
|
rc = VBOX_OBJECT_GET_MACHINE(iid.value, &machine);
|
||||||
if (NS_FAILED(rc)) {
|
if (NS_FAILED(rc)) {
|
||||||
@ -6939,9 +6945,12 @@ static int vboxDomainEventDeregisterAny(virConnectPtr conn,
|
|||||||
*/
|
*/
|
||||||
static virDrvOpenStatus vboxNetworkOpen(virConnectPtr conn,
|
static virDrvOpenStatus vboxNetworkOpen(virConnectPtr conn,
|
||||||
virConnectAuthPtr auth ATTRIBUTE_UNUSED,
|
virConnectAuthPtr auth ATTRIBUTE_UNUSED,
|
||||||
unsigned int flags ATTRIBUTE_UNUSED) {
|
unsigned int flags)
|
||||||
|
{
|
||||||
vboxGlobalData *data = conn->privateData;
|
vboxGlobalData *data = conn->privateData;
|
||||||
|
|
||||||
|
virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR);
|
||||||
|
|
||||||
if (STRNEQ(conn->driver->name, "VBOX"))
|
if (STRNEQ(conn->driver->name, "VBOX"))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
@ -7576,7 +7585,8 @@ static int vboxNetworkDestroy(virNetworkPtr network) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static char *vboxNetworkGetXMLDesc(virNetworkPtr network,
|
static char *vboxNetworkGetXMLDesc(virNetworkPtr network,
|
||||||
unsigned int flags ATTRIBUTE_UNUSED) {
|
unsigned int flags)
|
||||||
|
{
|
||||||
VBOX_OBJECT_HOST_CHECK(network->conn, char *, NULL);
|
VBOX_OBJECT_HOST_CHECK(network->conn, char *, NULL);
|
||||||
virNetworkDefPtr def = NULL;
|
virNetworkDefPtr def = NULL;
|
||||||
virNetworkIpDefPtr ipdef = NULL;
|
virNetworkIpDefPtr ipdef = NULL;
|
||||||
@ -7584,6 +7594,8 @@ static char *vboxNetworkGetXMLDesc(virNetworkPtr network,
|
|||||||
PRUnichar *networkInterfaceNameUtf16 = NULL;
|
PRUnichar *networkInterfaceNameUtf16 = NULL;
|
||||||
IHostNetworkInterface *networkInterface = NULL;
|
IHostNetworkInterface *networkInterface = NULL;
|
||||||
|
|
||||||
|
virCheckFlags(0, NULL);
|
||||||
|
|
||||||
if (VIR_ALLOC(def) < 0) {
|
if (VIR_ALLOC(def) < 0) {
|
||||||
virReportOOMError();
|
virReportOOMError();
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
@ -7751,9 +7763,12 @@ cleanup:
|
|||||||
|
|
||||||
static virDrvOpenStatus vboxStorageOpen (virConnectPtr conn,
|
static virDrvOpenStatus vboxStorageOpen (virConnectPtr conn,
|
||||||
virConnectAuthPtr auth ATTRIBUTE_UNUSED,
|
virConnectAuthPtr auth ATTRIBUTE_UNUSED,
|
||||||
unsigned int flags ATTRIBUTE_UNUSED) {
|
unsigned int flags)
|
||||||
|
{
|
||||||
vboxGlobalData *data = conn->privateData;
|
vboxGlobalData *data = conn->privateData;
|
||||||
|
|
||||||
|
virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR);
|
||||||
|
|
||||||
if (STRNEQ(conn->driver->name, "VBOX"))
|
if (STRNEQ(conn->driver->name, "VBOX"))
|
||||||
return VIR_DRV_OPEN_DECLINED;
|
return VIR_DRV_OPEN_DECLINED;
|
||||||
|
|
||||||
@ -8096,7 +8111,8 @@ static virStorageVolPtr vboxStorageVolLookupByPath(virConnectPtr conn, const cha
|
|||||||
|
|
||||||
static virStorageVolPtr vboxStorageVolCreateXML(virStoragePoolPtr pool,
|
static virStorageVolPtr vboxStorageVolCreateXML(virStoragePoolPtr pool,
|
||||||
const char *xml,
|
const char *xml,
|
||||||
unsigned int flags ATTRIBUTE_UNUSED) {
|
unsigned int flags)
|
||||||
|
{
|
||||||
VBOX_OBJECT_CHECK(pool->conn, virStorageVolPtr, NULL);
|
VBOX_OBJECT_CHECK(pool->conn, virStorageVolPtr, NULL);
|
||||||
virStorageVolDefPtr def = NULL;
|
virStorageVolDefPtr def = NULL;
|
||||||
PRUnichar *hddFormatUtf16 = NULL;
|
PRUnichar *hddFormatUtf16 = NULL;
|
||||||
@ -8104,6 +8120,8 @@ static virStorageVolPtr vboxStorageVolCreateXML(virStoragePoolPtr pool,
|
|||||||
virStoragePoolDef poolDef;
|
virStoragePoolDef poolDef;
|
||||||
nsresult rc;
|
nsresult rc;
|
||||||
|
|
||||||
|
virCheckFlags(0, NULL);
|
||||||
|
|
||||||
/* since there is currently one default pool now
|
/* since there is currently one default pool now
|
||||||
* and virStorageVolDefFormat() just checks it type
|
* and virStorageVolDefFormat() just checks it type
|
||||||
* so just assign it for now, change the behaviour
|
* so just assign it for now, change the behaviour
|
||||||
@ -8189,7 +8207,8 @@ cleanup:
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int vboxStorageVolDelete(virStorageVolPtr vol,
|
static int vboxStorageVolDelete(virStorageVolPtr vol,
|
||||||
unsigned int flags ATTRIBUTE_UNUSED) {
|
unsigned int flags)
|
||||||
|
{
|
||||||
VBOX_OBJECT_CHECK(vol->conn, int, -1);
|
VBOX_OBJECT_CHECK(vol->conn, int, -1);
|
||||||
vboxIID hddIID = VBOX_IID_INITIALIZER;
|
vboxIID hddIID = VBOX_IID_INITIALIZER;
|
||||||
unsigned char uuid[VIR_UUID_BUFLEN];
|
unsigned char uuid[VIR_UUID_BUFLEN];
|
||||||
@ -8199,6 +8218,8 @@ static int vboxStorageVolDelete(virStorageVolPtr vol,
|
|||||||
int i = 0;
|
int i = 0;
|
||||||
int j = 0;
|
int j = 0;
|
||||||
|
|
||||||
|
virCheckFlags(0, -1);
|
||||||
|
|
||||||
if (virUUIDParse(vol->key, uuid) < 0) {
|
if (virUUIDParse(vol->key, uuid) < 0) {
|
||||||
vboxError(VIR_ERR_INVALID_ARG,
|
vboxError(VIR_ERR_INVALID_ARG,
|
||||||
_("Could not parse UUID from '%s'"), vol->key);
|
_("Could not parse UUID from '%s'"), vol->key);
|
||||||
@ -8422,7 +8443,8 @@ static int vboxStorageVolGetInfo(virStorageVolPtr vol, virStorageVolInfoPtr info
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *vboxStorageVolGetXMLDesc(virStorageVolPtr vol, unsigned int flags ATTRIBUTE_UNUSED) {
|
static char *vboxStorageVolGetXMLDesc(virStorageVolPtr vol, unsigned int flags)
|
||||||
|
{
|
||||||
VBOX_OBJECT_CHECK(vol->conn, char *, NULL);
|
VBOX_OBJECT_CHECK(vol->conn, char *, NULL);
|
||||||
IHardDisk *hardDisk = NULL;
|
IHardDisk *hardDisk = NULL;
|
||||||
unsigned char uuid[VIR_UUID_BUFLEN];
|
unsigned char uuid[VIR_UUID_BUFLEN];
|
||||||
@ -8432,6 +8454,8 @@ static char *vboxStorageVolGetXMLDesc(virStorageVolPtr vol, unsigned int flags A
|
|||||||
int defOk = 0;
|
int defOk = 0;
|
||||||
nsresult rc;
|
nsresult rc;
|
||||||
|
|
||||||
|
virCheckFlags(0, NULL);
|
||||||
|
|
||||||
memset(&pool, 0, sizeof(pool));
|
memset(&pool, 0, sizeof(pool));
|
||||||
memset(&def, 0, sizeof(def));
|
memset(&def, 0, sizeof(def));
|
||||||
|
|
||||||
@ -8595,7 +8619,7 @@ static char *
|
|||||||
vboxDomainScreenshot(virDomainPtr dom,
|
vboxDomainScreenshot(virDomainPtr dom,
|
||||||
virStreamPtr st,
|
virStreamPtr st,
|
||||||
unsigned int screen,
|
unsigned int screen,
|
||||||
unsigned int flags ATTRIBUTE_UNUSED)
|
unsigned int flags)
|
||||||
{
|
{
|
||||||
VBOX_OBJECT_CHECK(dom->conn, char *, NULL);
|
VBOX_OBJECT_CHECK(dom->conn, char *, NULL);
|
||||||
IConsole *console = NULL;
|
IConsole *console = NULL;
|
||||||
@ -8606,6 +8630,8 @@ vboxDomainScreenshot(virDomainPtr dom,
|
|||||||
int tmp_fd = -1;
|
int tmp_fd = -1;
|
||||||
unsigned int max_screen;
|
unsigned int max_screen;
|
||||||
|
|
||||||
|
virCheckFlags(0, NULL);
|
||||||
|
|
||||||
vboxIIDFromUUID(&iid, dom->uuid);
|
vboxIIDFromUUID(&iid, dom->uuid);
|
||||||
rc = VBOX_OBJECT_GET_MACHINE(iid.value, &machine);
|
rc = VBOX_OBJECT_GET_MACHINE(iid.value, &machine);
|
||||||
if (NS_FAILED(rc)) {
|
if (NS_FAILED(rc)) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user