1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-22 18:50:08 +03:00

Bug #1810: One more dynamic_cast check.

This one was safe because the OS attribute must be a vector,
it is enforced by VirtualMachine::parse_os
This commit is contained in:
Carlos Martín 2013-03-12 17:01:01 +01:00
parent 63ef494d6f
commit 5e4f93432c

View File

@ -509,29 +509,48 @@ void TransferManager::prolog_action(int vid)
if ( num > 0 )
{
string kernel;
string initrd;
bool update = false;
const VectorAttribute * os_attr;
os_attr = dynamic_cast<const VectorAttribute *>(attrs[0]);
string kernel = prolog_os_transfer_commands(vm,
os_attr,
"KERNEL",
opennebula_hostname,
xfr);
if (os_attr != 0 )
{
kernel = prolog_os_transfer_commands(
vm,
os_attr,
"KERNEL",
opennebula_hostname,
xfr);
initrd = prolog_os_transfer_commands(
vm,
os_attr,
"initrd",
opennebula_hostname,
xfr);
}
if ( !kernel.empty() )
{
vm->set_kernel(kernel);
vmpool->update(vm);
update = true;
}
string initrd = prolog_os_transfer_commands(vm,
os_attr,
"initrd",
opennebula_hostname,
xfr);
if ( !initrd.empty() )
{
vm->set_initrd(initrd);
update = true;
}
if ( update )
{
vmpool->update(vm);
}
}