- Timestamp:
- Mar 24, 2011 4:59:10 PM (14 years ago)
- svn:sync-xref-src-repo-rev:
- 70766
- Location:
- trunk/src/VBox/Main
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Main/include/VirtualBoxBase.h
r35722 r36411 324 324 325 325 /** 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 /** 326 337 * Checks that safe array argument is not NULL and returns E_INVALIDARG + 327 338 * extended error info on failure. -
trunk/src/VBox/Main/src-server/MachineImpl.cpp
r36365 r36411 4994 4994 IN_BSTR aFlags) 4995 4995 { 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 5002 4996 HRESULT rc; 5003 4997 5004 try {5005 ComPtr<IInternalSessionControl> directControl =5006 4998 try 4999 { 5000 ComPtr<IInternalSessionControl> directControl = mData->mSession.mDirectControl; 5007 5001 5008 5002 BSTR dummy = NULL; /* will not be changed (setter) */ … … 5011 5005 rc = E_ACCESSDENIED; 5012 5006 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); 5020 5012 } 5021 5013 catch (std::bad_alloc &) … … 5035 5027 #else // VBOX_WITH_GUEST_PROPS 5036 5028 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(); 5041 5035 5042 5036 HRESULT rc = setGuestPropertyToVM(aName, aValue, aFlags); … … 5149 5143 ReturnComNotImplemented(); 5150 5144 #else // VBOX_WITH_GUEST_PROPS 5151 if (!VALID_PTR(aPatterns) && (aPatterns != NULL)) 5152 return E_POINTER; 5153 5145 CheckComArgMaybeNull(aPatterns); 5154 5146 CheckComArgOutSafeArrayPointerValid(aNames); 5155 5147 CheckComArgOutSafeArrayPointerValid(aValues); … … 11294 11286 11295 11287 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); 11298 11290 11299 11291 try
Note:
See TracChangeset
for help on using the changeset viewer.