• last updated 5 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
[USETUP]: Implement work-in-progress code that, when upgrading an existing ReactOS installation, verifies whether the (existing) system registry hives are valid (by loading & unloading them, this allows using the built-in repair functionality if needed), or not.

If a given hive cannot be repaired successfully, it is backed up (with a '.brk' extension, "brk" as "broken"), then is marked up for recreation.

When all hives have been checked, if there are any hive that needs to be recreated, we recreate its hive file, mount it, but we do *NOT* mount the other valid existing hives for update. We create instead dummy registry hives so that we can actually use, as the update code, the same one as the one used when fully creating the registry hives for a clean installation (of course, this choice can be improved later on).

The update code (i.e. the same as the registry clean-install one) then adds the registry keys & values, either putting them in the dummy registry hives (the ones that we don't want to recreate) or in the registry hive that is recreated.

At the end, the (re)created registry hives are flushed back to disk, and a copy of them (under a '.sav' extension) are created, so that they can be used for restoration purposes if 2nd-stage (and up) goes berserk.

Extra fixes:

- Use the correct structure member field when initializing the 'InstallDir' variable, when performing an upgrade.

- CreateNestedKey() should be better analysed to see whether it correctly creates the full registry path compatible with volatile/non-volatile keys (under inspection).

[USETUP]: Addendum to r75008: Adjust the code that calls SetupCopyFile().
[USETUP]: Introduce SetupDeleteFile() and SetupMoveFile() (in addition to the already-existing SetupCopyFile()) in order to implement moving / renaming existing files.

Will be used soon to make backups of system files, like the registry hive files just freshly created.

- Make the SetupCopyFile() function closer to its win32 counterpart.

[USETUP]: Explicitely use the REG_OPTION_(NON_)VOLATILE flags in NtCreateKey calls.
[NTOSKRNL]

Implement SystemExtendedHandleInformation based on SystemHandleInformation.

To be improved...

Passes ntdll_winetest:info.

CORE-13368

    • -6
    • +115
    /trunk/reactos/ntoskrnl/ex/sysinfo.c
[SHELL32] -CDrivesFolder: Implement returning the appropriate type string in GetDetailsOf. Simplify GetDetailsOf and CDrivesExtractIcon_CreateInstance.
[APPHELP_APITEST] Addendum to r74986, make the test work on win7. CORE-13284
    • -4
    • +5
    /trunk/rostests/apitests/apphelp/env.c
[BUGCODES]

- Add DIRTY_NOWRITE_PAGES_CONGESTION and BUGCODE_USB_DRIVER

    • -0
    • +16
    /trunk/reactos/sdk/include/reactos/mc/bugcodes.mc
[PSDK]

- Fix C++ version of BM_REQUEST_TYPE without breaking the C version

    • -1
    • +5
    /trunk/reactos/sdk/include/psdk/usb200.h
[WIN32NT_APITEST] Do not assert on a driver without DirectX support.
[NTOS:EX]

- Return STATUS_SUCCESS from the SystemExtendedHandleInformation stub to make Process Explorer happy. Fixes infinite loop on AHK bot.

[WIN32K] Remove an unneeded check at GreGetDIBitsInternal. Patch by Victor Martinez Calvo. CORE-13413 CID 1411972
    • -1
    • +1
    /trunk/reactos/win32ss/gdi/ntgdi/dibobj.c
[COMCTL32_IMAGELIST] Prevent dereferencing a null pointer.
[SHELL32] Do not fail CFSFolder::GetDisplayNameOf with a NULL pidl, preventing another crash in shell32:CFSFolder
[WIN32KNT_APITEST] Do not assert on the result of an unimplemented function.
[SHELL32] Don't try to follow a null pointer inside CFSDropTarget, this fixes a crash in shell32:CFSFolder
[SHELL32] Expose IID_CDefView in our CDefView implementation, this fixes a crash on shell32:shlview
    • -0
    • +1
    /trunk/reactos/dll/win32/shell32/CDefView.cpp
[WIN32K:NTUSER]

Fix pool use after free during user32:clipboard:

- Rename IntIsFormatAvailable to IntGetFormatElement to better reflect what it does

- Introduce a new IntIsFormatAvailable that actually returns BOOL as implied by the name

- In IntAddSynthesizedFormats, call IntGetFormatElement right before its data is actually used, since IntAddFormatedData will invalidate the element pointer.

Thanks to Kamil for the initial investigation on this.

CORE-13408 #resolve

    • -26
    • +32
    /trunk/reactos/win32ss/user/ntuser/clipboard.c
[WS2_32]

Don't pass a null ptr at MSAFD to avoid dereference.

Fixes crash in ws2_32:sock

    • -38
    • +46
    /trunk/reactos/dll/win32/ws2_32/src/sockctrl.c
[WIN32K:NTUSER]

- Initialize BITMAPINFOHEADER::biSize before calling GreGetDIBitsInternal in IntSynthesizeDib. Fixes use of uninitialized memory and subsequent stack buffer overflow.

CORE-13408

    • -0
    • +1
    /trunk/reactos/win32ss/user/ntuser/clipboard.c
[WIN32K:NTUSER]

- Include the CLIPBOARDDATA structure itself when calculating the size passed to UserCreateObject in IntSynthesizeDib. Fixes user heap corruption when running user32_winetest:clipboard.

CORE-13408

    • -1
    • +1
    /trunk/reactos/win32ss/user/ntuser/clipboard.c
[RDBSS]

Cosmetic fix

CID 1411968, 1411969

[QCKLNCH]

-Subclassed button handler to test button click.

-Minor code cleanup.

[RDBSS]

Fix reading parameters from registry

CID 1411973

[APPHELP_APITEST] Add tests for ApphelpCheckRunApp[Ex], SdbGetMatchingExe, Sdb[Un]PackAppCompatData. CORE-13284
    • -63
    • +6
    /trunk/rostests/apitests/apphelp/db.cpp
    • -0
    • +1323
    /trunk/rostests/apitests/apphelp/env.c
    • -0
    • +64
    /trunk/rostests/apitests/apphelp/apphelp_apitest.h
[RXCE]

Misc. fixes.

CID 1411918, 1411929, 1411919

    • -2
    • +2
    /trunk/reactos/sdk/lib/drivers/rxce/rxce.c
[SHLWAPI_APITEST] Add PathFindOnPath tests. Patch by Katayama Hirofumi MZ. ROSTESTS-283 #comment Thanks!
    • -0
    • +348
    /trunk/rostests/apitests/shlwapi/PathFindOnPath.c
Addendum to r74982, remove some debugging code.
[SHELL32_APITEST] Add tests for PathResolve. Patch by Katayama Hirofumi MZ. CORE-12665 #comment Thanks!
    • -0
    • +894
    /trunk/rostests/apitests/shell32/PathResolve.cpp
[SCHEDSVC]

Add a loop at the end of SchedServiceMain that will run until a stop event is signaled. This loop will be used to run the schduled jobs.

    • -14
    • +43
    /trunk/reactos/base/services/schedsvc/schedsvc.c