reactos/sdk/lib/cmlib
George Bișoc 279f8f8864
[CMLIB] Fix the bin during hive initialization from memory if it's corrupt
As we iterate over the chunk hive data pointer for hive bins that we are going
to enlist, we might encounter one or several bins that would get corrupted
during a premature abortion of a registry writing operation such as due to
a power outage of the system, hardware malfunction, etc.

Corruption at the level of hive bins is nasty because they contain actual cell
data of registry information such as keys, values etc. Assuming a bin is corrupt
in part we can fix it by recovering some of the bin properties that, theoretically,
could be fixed -- namely the signature, size and offset.

For size and offset we are more or less safe because a bin typically has a size
of a block, and the offset is the coordinate index of where a hive bin should lay at.
2023-11-19 20:44:29 +01:00
..
CMakeLists.txt [SDK][CMLIB] Implement CmCheckRegistry and validation private helpers 2023-11-19 20:44:27 +01:00
cmcheck.c [SDK][CMLIB] Implement CmCheckRegistry and validation private helpers 2023-11-19 20:44:27 +01:00
cmdata.h Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys. 2017-10-03 07:45:34 +00:00
cmheal.c [SDK][CMLIB] Implement self-heal registry helpers 2023-11-19 20:44:27 +01:00
cmindex.c [SDK:CMLIB] Use Hive->Allocate / Hive->Free where possible. 2022-04-16 18:33:24 +02:00
cminit.c [SDK][CMLIB] Purge volatile data of registry in a proper way with CmCheckRegistry 2023-11-19 20:44:28 +01:00
cmkeydel.c [SDK:CMLIB][MKHIVE][BOOT:ENVIRON][NTOS:CONFIG] Add missing HvGetCell casts. Replace some ASSERT(FALSE). 2022-03-27 18:37:16 +02:00
cmlib.h [SDK][CMLIB] Purge volatile data of registry in a proper way with CmCheckRegistry 2023-11-19 20:44:28 +01:00
cmname.c [SDK:CMLIB] Const-ify the unicode strings that are only used as input and not modified. 2022-03-27 19:38:54 +02:00
cmse.c [SDK:CMLIB][MKHIVE][BOOT:ENVIRON][NTOS:CONFIG] Add missing HvGetCell casts. Replace some ASSERT(FALSE). 2022-03-27 18:37:16 +02:00
cmvalue.c [SDK:CMLIB] Use Hive->Allocate / Hive->Free where possible. 2022-04-16 18:33:24 +02:00
hivebin.c [TOOLS] Fix/suppress all MSVC/x64 warnings (#1525) 2019-04-28 23:21:48 +02:00
hivecell.c [NTOS:CM] Don't lazy flush the registry during unlocking operation 2022-12-23 19:45:13 +01:00
hivedata.h [SDK][CMLIB] Declare some BootType and BootRecover identifiers & Miscellaneous Stuff 2023-11-19 20:44:23 +01:00
hiveinit.c [CMLIB] Fix the bin during hive initialization from memory if it's corrupt 2023-11-19 20:44:29 +01:00
hivesum.c Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys. 2017-10-03 07:45:34 +00:00
hivewrt.c [SDK][CMLIB] Implement log transaction writes & Resuscitation 2023-11-19 20:44:27 +01:00