VirtualBox

Changeset 36411 in vbox for trunk


Ignore:
Timestamp:
Mar 24, 2011 4:59:10 PM (14 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
70766
Message:

MachineImpl.cpp,VirtualBoxBase.h: Re r70709 - caller validated the setGuestPropertyToVM arguments already. Checking the caller I found a few VALID_PTR checks which didn't set error, added CheckComArgMaybeNull to hide deal with it.

Location:
trunk/src/VBox/Main
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/include/VirtualBoxBase.h

    r35722 r36411  
    324324
    325325/**
     326 * Checks that the pointer argument is a valid pointer or NULL and returns
     327 * E_INVALIDARG + extended error info on failure.
     328 * @param arg   Input pointer-type argument (strings, interface pointers...)
     329 */
     330#define CheckComArgMaybeNull(arg) \
     331    do { \
     332        if (RT_UNLIKELY(!RT_VALID_PTR(arg) && (arg) != NULL)) \
     333            return setError(E_INVALIDARG, tr("Argument %s is an invalid pointer"), #arg); \
     334    } while (0)
     335
     336/**
    326337 * Checks that safe array argument is not NULL and returns E_INVALIDARG +
    327338 * extended error info on failure.
  • trunk/src/VBox/Main/src-server/MachineImpl.cpp

    r36365 r36411  
    49944994                                      IN_BSTR aFlags)
    49954995{
    4996     CheckComArgStrNotEmptyOrNull(aName);
    4997     if ((aValue != NULL) && !VALID_PTR(aValue))
    4998         return E_INVALIDARG;
    4999     if ((aFlags != NULL) && !VALID_PTR(aFlags))
    5000         return E_INVALIDARG;
    5001 
    50024996    HRESULT rc;
    50034997
    5004     try {
    5005         ComPtr<IInternalSessionControl> directControl =
    5006             mData->mSession.mDirectControl;
     4998    try
     4999    {
     5000        ComPtr<IInternalSessionControl> directControl = mData->mSession.mDirectControl;
    50075001
    50085002        BSTR dummy = NULL; /* will not be changed (setter) */
     
    50115005            rc = E_ACCESSDENIED;
    50125006        else
    5013             rc = directControl->AccessGuestProperty
    5014                      (aName,
    5015                       /** @todo Fix when adding DeleteGuestProperty(),
    5016                                    see defect. */
    5017                       aValue, aFlags,
    5018                       true /* isSetter */,
    5019                       &dummy, &dummy64, &dummy);
     5007            /** @todo Fix when adding DeleteGuestProperty(),
     5008                         see defect. */
     5009            rc = directControl->AccessGuestProperty(aName, aValue, aFlags,
     5010                                                    true /* isSetter */,
     5011                                                    &dummy, &dummy64, &dummy);
    50205012    }
    50215013    catch (std::bad_alloc &)
     
    50355027#else // VBOX_WITH_GUEST_PROPS
    50365028    CheckComArgStrNotEmptyOrNull(aName);
    5037     if ((aFlags != NULL) && !VALID_PTR(aFlags))
    5038         return E_INVALIDARG;
    5039     AutoCaller autoCaller(this);
    5040     if (FAILED(autoCaller.rc())) return autoCaller.rc();
     5029    CheckComArgMaybeNull(aFlags);
     5030    CheckComArgMaybeNull(aValue);
     5031
     5032    AutoCaller autoCaller(this);
     5033    if (FAILED(autoCaller.rc()))
     5034        return autoCaller.rc();
    50415035
    50425036    HRESULT rc = setGuestPropertyToVM(aName, aValue, aFlags);
     
    51495143    ReturnComNotImplemented();
    51505144#else // VBOX_WITH_GUEST_PROPS
    5151     if (!VALID_PTR(aPatterns) && (aPatterns != NULL))
    5152         return E_POINTER;
    5153 
     5145    CheckComArgMaybeNull(aPatterns);
    51545146    CheckComArgOutSafeArrayPointerValid(aNames);
    51555147    CheckComArgOutSafeArrayPointerValid(aValues);
     
    1129411286
    1129511287    CheckComArgStrNotEmptyOrNull(aName);
    11296     if (aValue != NULL && (!VALID_PTR(aValue) || !VALID_PTR(aFlags)))
    11297         return E_POINTER;  /* aValue can be NULL to indicate deletion */
     11288    CheckComArgMaybeNull(aValue);
     11289    CheckComArgMaybeNull(aFlags);
    1129811290
    1129911291    try
Note: See TracChangeset for help on using the changeset viewer.

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