[PATCH 0/1] MR10822: vbscript: Return subscript-out-of-range from UBound/LBound on uninitialized array.
From: Francis De Brabandere <francisdb@gmail.com> --- dlls/vbscript/global.c | 6 ++++++ dlls/vbscript/tests/api.vbs | 16 ++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/dlls/vbscript/global.c b/dlls/vbscript/global.c index ac7e707a041..de6657dced2 100644 --- a/dlls/vbscript/global.c +++ b/dlls/vbscript/global.c @@ -1192,6 +1192,9 @@ static HRESULT Global_LBound(BuiltinDisp *This, VARIANT *arg, unsigned args_cnt, return E_NOTIMPL; } + if(!sa) + return MAKE_VBSERROR(VBSE_OUT_OF_BOUNDS); + if(args_cnt == 2) { hres = to_int(arg + 1, &dim); if(FAILED(hres)) @@ -1233,6 +1236,9 @@ static HRESULT Global_UBound(BuiltinDisp *This, VARIANT *arg, unsigned args_cnt, return E_NOTIMPL; } + if(!sa) + return MAKE_VBSERROR(VBSE_OUT_OF_BOUNDS); + if(args_cnt == 2) { hres = to_int(arg + 1, &dim); if(FAILED(hres)) diff --git a/dlls/vbscript/tests/api.vbs b/dlls/vbscript/tests/api.vbs index 9917997a9aa..6be6149d536 100644 --- a/dlls/vbscript/tests/api.vbs +++ b/dlls/vbscript/tests/api.vbs @@ -370,6 +370,22 @@ end sub call testLBoundError() call testUBoundError() +sub testBoundUninitArray() + Dim u() + on error resume next + call Err.clear() + call UBound(u) + call ok(Err.number = 9, "UBound(uninit) Err.number = " & Err.number) + call Err.clear() + call LBound(u) + call ok(Err.number = 9, "LBound(uninit) Err.number = " & Err.number) + call Err.clear() + call UBound(u, 1) + call ok(Err.number = 9, "UBound(uninit,1) Err.number = " & Err.number) +end sub + +call testBoundUninitArray() + Dim newObject Set newObject = New ValClass newObject.myval = 1 -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10822
This merge request was approved by Jacek Caban. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/10822
participants (3)
-
Francis De Brabandere -
Francis De Brabandere (@francisdb) -
Jacek Caban (@jacek)