VirtualBox

Changeset 13555 in vbox


Ignore:
Timestamp:
Oct 24, 2008 2:09:12 PM (16 years ago)
Author:
vboxsync
Message:

Main (Guest Properties): more checks for allocation failures

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/MachineImpl.cpp

    r13551 r13555  
    51645164
    51655165        Key guestPropertiesNode = aNode.findKey ("GuestProperties");
    5166         Bstr notificationPatterns ("");
     5166        Bstr notificationPatterns ("");  /* We catch allocation failure below. */
    51675167        if (!guestPropertiesNode.isNull())
    51685168        {
     
    51815181                /* property flags (optional, defaults to empty) */
    51825182                Bstr flags = (*it).stringValue ("flags");
    5183                 validateFlags (Utf8Str (flags).raw(), &fFlags);
     5183                Utf8Str utf8Flags (flags);
     5184                if (utf8Flags.isNull ())
     5185                    return E_OUTOFMEMORY;
     5186                validateFlags (utf8Flags.raw(), &fFlags);
    51845187                HWData::GuestProperty property = { name, value, timestamp, fFlags };
    51855188                mHWData->mGuestProperties.push_back(property);
     5189                /* This is just sanity, as the push_back() will probably have thrown
     5190                 * an exception if we are out of memory.  Note that if we run out
     5191                 * allocating the Bstrs above, this will be caught here as well. */
     5192                if (   mHWData->mGuestProperties.back().mName.isNull ()
     5193                    || mHWData->mGuestProperties.back().mValue.isNull ()
     5194                   )
     5195                    return E_OUTOFMEMORY;
    51865196            }
    51875197            notificationPatterns = guestPropertiesNode.stringValue ("notificationPatterns");
     
    51895199        mHWData->mPropertyServiceActive = false;
    51905200        mHWData->mGuestPropertyNotificationPatterns = notificationPatterns;
     5201        if (mHWData->mGuestPropertyNotificationPatterns.isNull ())
     5202            return E_OUTOFMEMORY;
    51915203    }
    51925204#endif /* VBOX_WITH_GUEST_PROPS defined */
     
    65546566#ifdef VBOX_WITH_GUEST_PROPS
    65556567    /* Guest properties */
     6568    try
    65566569    {
    65576570        using namespace guestProp;
     
    65606573
    65616574        for (HWData::GuestPropertyList::const_iterator it = mHWData->mGuestProperties.begin();
    6562              it != mHWData->mGuestProperties.end();
    6563              ++ it)
     6575             it != mHWData->mGuestProperties.end(); ++it)
    65646576        {
    65656577            HWData::GuestProperty property = *it;
     
    65726584            propertyNode.setValue <ULONG64> ("timestamp", property.mTimestamp);
    65736585            writeFlags(property.mFlags, szFlags);
    6574             propertyNode.setValue <Bstr> ("flags", Bstr(szFlags));
    6575         }
     6586            Bstr flags (szFlags);
     6587            if (flags.isNull())
     6588                return E_OUTOFMEMORY;
     6589            propertyNode.setValue <Bstr> ("flags", flags);
     6590        }
     6591        Bstr emptyStr ("");
     6592        if (emptyStr.isNull())
     6593            return E_OUTOFMEMORY;
    65766594        guestPropertiesNode.setValueOr <Bstr> ("notificationPatterns",
    65776595                                               mHWData->mGuestPropertyNotificationPatterns,
    6578                                                Bstr (""));
     6596                                               emptyStr);
     6597    }
     6598    catch (ENoMemory e)
     6599    {
     6600        return E_OUTOFMEMORY;
    65796601    }
    65806602#endif /* VBOX_WITH_GUEST_PROPS defined */
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette