Commit Graph
88862 Commits
Author SHA1 Message Date
Timo Kreuzer 15fa25299f [RTL][NTDLL][KERNEL32] Implement (Rtl)GetProductInfo 2026-05-19 14:40:01 +00:00
Timo Kreuzer 50985d9702 [NTDLL_APITEST] Add a test for RtlGetProductInfo 2026-05-19 14:40:01 +00:00
Timo Kreuzer 11ab9c2717 [XDK] Add missing PRODUCT_* definitions 2026-05-19 14:40:01 +00:00
Hasan Eliküçük 743dab2fbc [FONTVIEW] Update Turkish (tr-TR) translation (#9011) 2026-05-19 16:22:31 +03:00
Anupam MedirattaandOrbisAI Security 85a3149472 [HALARM] Bound early debug print formatting (#9017)
Replace unbounded vsprintf() call in DbgPrintEarly() with vsnprintf()
when formatting into a fixed-size 1024-byte stack buffer in ARM HAL.

Automated security fix generated by Orbis Security AI.

CORE-17604

Co-authored-by: OrbisAI Security <[email protected]>
2026-05-16 17:45:10 +05:30
Katayama Hirofumi MZ 146e1415d0 [MSPAINT] Update cursor shape for brush and rubber (#8974)
Improve UI/UX by updating mouse
cursor shape.
JIRA issue: CORE-20520
- Add CStyledCursor class.
- Enhance CCanvasWindow::OnSetCursor
  for TOOL_BRUSH and TOOL_RUBBER.
- Add CCanvasWindow::m_hBrushCursor
  CCanvasWindow::m_hRubberCursor to
  keep cursor shapes.
- Send WM_SETCURSOR from ToolsModel
  to update the cursor shape.
Co-authored-by: Hermès BÉLUSCA - MAÏTO <[email protected]>
2026-05-19 10:23:58 +09:00
Ahmed Arif 0e64048812 [NDK][RTL] Fix packing leak and ARM64 heap layouts (#9020)
Stop `PS_JOB_TOKEN_FILTER`'s pack(1) scope from leaking into `EJOB`, which misaligns kernel fields on ARM64.

Use the Win64 heap entry layout on ARM64 and assert the heap metadata offsets verified against NT ARM64 symbols.

Keep heap alignment masks pointer-sized and size `STACK_TRACE_DATABASE` `ERESOURCE` padding for all Win64 targets.

CORE-18200
2026-05-18 23:48:41 +02:00
Ahmed Arif 4da86123f4 [MEDIA][CMAKE] Stop .msstyles and .tlb modules from rebuilding on every ninja invocation (#9003)
Move 'xdk' from `OBJECT_DEPENDS` (which forces RC recompilation when xdk changes) to `add_dependencies()` at the target level (which only ensures build order without cascading into recompilation).

This applies to all 5 theme msstyles (Lautus, Lunar, Mizu, Modern, Blackshade) and 3 TLB modules (stdole2, stdole32, mshtml).

Addendum to commit 1628f5e682 (PR #8576).
2026-05-18 23:31:48 +02:00
Whindmar Saksit 879e1cff63 [INCLUDE/WINE] Don't use DECLSPEC_IMPORT in shlwapi.h (#9034)
This fixes wscript.exe crashing on .wsf files because of delay-loaded shlwapi, the bug was introduced in  6762703 (PR #8419)
2026-05-18 23:30:31 +02:00
Eric Kohl bd363a821e [NETCFGX] Improve INetCfgComponentControl::ApplyPnpChanges
Pass a pointer to the INetCfgPnpReconfigCallback interface in the ApplyPnpChanges method.
2026-05-18 22:23:29 +02:00
Katayama Hirofumi MZ e148366e9a [SHLWAPI][SDK] Support FixSlashesAndColonA (#9040)
Implementing missing features...
JIRA issue: CORE-19278
- Implement FixSlashesAndColonA function.
- Modify shlwapi.spec.
- Add prototype into <shlwapi_undoc.h>.
2026-05-18 21:19:01 +09:00
Eric Kohl fb47d37a49 [DHCPCSVC][PSDK][IDL] Improve DhcpRequestParams and add DhcpUndoRequestParams stub
Add a call into the server side for DhcpRequestParams.
2026-05-17 13:16:30 +02:00
Katayama Hirofumi MZ df7c1fbc6b [NTGDI][FREETYPE] Remove dead parameters (#9022)
Improve simplicity for future.
JIRA issue: CORE-8466
- Remove the 1st parameter (PDC) of
  TextIntUpdateSize function.
- Remove the 1st parameter (PDC) of
  IntRequestFontSize function.
2026-05-17 09:58:56 +09:00
Katayama Hirofumi MZ 4e2cca167d [WINLOGON] Optimize StartLsass and StartServicesManager (#9016)
Optimize for speed.
JIRA issue: N/A
Do not initialize the STARTUPINFO member, which is already
filled with zeros, with zeros, in StartLsass and
StartServicesManager functions.
Co-authored-by: Hermès BÉLUSCA - MAÏTO <[email protected]>
2026-05-17 08:42:32 +09:00
Katayama Hirofumi MZ 99252d7f94 [REACTOS] Add WS_TABSTOP to IDD_SUMMARYPAGE IDC_CONFIRM_INSTALL (#9014)
Due to resource compiler (windres)'s
bug, WS_TABSTOP style wasn't added
to IDC_CONFIRM_INSTALL checkbox
(I've confirmed WS_TABSTOP lackness
on reactos.exe with Resource Hacker
and RisohEditor). This PR will improve
keyboard usability.
JIRA issue: N/A
- Add WS_TABSTOP style to
  IDC_CONFIRM_INSTALL checkbox
  in IDD_SUMMARYPAGE resource
  dialog.
2026-05-17 06:36:00 +09:00
Timo Kreuzer a7f658e322 [NTOS:IO] Fix IopGetBusTypeGuidIndex
- Use a global structure instead of pointer
- Allocate only the GUID buffer
- Keep track of allocated size and number of GUIDs
- Grow in steps of 8 GUIDs
- Use ExAllocatePoolWithTag instead of ExAllocatePool
- Use IsEqualGUID

See CORE-12791
2026-05-16 21:07:55 +00:00
Ahmed Arif 1ed6179ea8 [ASMPP] Improve MASM translation for Clang IAS (#8981)
* [ASMPP] Translate MASM NOT as bitwise complement

MASM NOT is a bitwise operator. Emitting C/GAS logical negation changes numeric constant values, for example X87XAM_BAD becomes 0 instead of 0xf800.

* [ASMPP] Support additional MASM expression operators

Map MASM expression operators through a single helper and add support for shr, eq, ne, lt, le, gt, and ge. This keeps existing and/or/shl/not handling while allowing expressions outside the instruction-token set.

* [ASMPP] Translate MASM if expressions

Handle plain MASM if through the expression translator so operators like ne are emitted as Clang/GAS syntax. Keep ifdef, ifndef, else, and endif on the existing directive path.

* [ASMPP] Handle RIP-relative numeric offsets

Keep constant +/- offsets before the emitted [rip] suffix so Clang IAS sees forms like symbol+4[rip] instead of the invalid symbol[rip]+4.

* [ASMPP] Balance FRAME procedure unwind directives

Clang IAS rejects .func/.endfunc and requires .seh_endproc or .cfi_endproc to match an active frame. Track whether each PROC line contains FRAME, including forms such as PROC PRIVATE FRAME, and emit the closing unwind directive only for framed procedures.

* [ASMPP] Simplify whitespace skipping for RIP offsets
2026-05-16 21:06:52 +00:00
Timo Kreuzer ae71db5608 [GDIPLUS] Sync to Wine-10.0 2026-05-16 10:43:08 +00:00
Timo Kreuzer 6cabd9530a [KERNEL32_VISTA] Add TryAcquireSRWLockExclusive 2026-05-16 10:43:08 +00:00
Timo Kreuzer 44e322b4f2 [NTDLL_VISTA] Add RtlTryAcquireSRWLockExclusive 2026-05-16 10:43:08 +00:00
Timo Kreuzer e62eea07f8 [GDIPLUS_WINETEST] Skip failing tests on Vista 2026-05-16 10:43:08 +00:00
Timo Kreuzer 04c7639769 [GDIPLUS_WINETEST] Fix crash on Vista
GdipDrawImageFX isn't available pn Vista
2026-05-16 10:43:08 +00:00
Timo Kreuzer e6a61fb3c7 [GDIPLUS_WINETEST] Sync to Wine-10.0 2026-05-16 10:43:08 +00:00
Timo Kreuzer 632b09f55e [SDK] include/wine/test.h: add __wine_dbg_strdup
Taken from wine-10.0
2026-05-16 10:43:08 +00:00
Timo Kreuzer da6892ede5 [PSDK] Update gdiplus headers to Wine-10.0
This reverts most of the useless reformatting. Don't reformat wine headers. It only makes syncing harder.
2026-05-16 10:43:08 +00:00
Timo Kreuzer 07c413637e [KERNEL32_VISTA] Don't delay-import from ntdll_vista
kernel32 functions can be called during process-attach. The same must be true for kernel32_vista. Wine's msvcrt calls GetUserDefaultLocaleName in kernel32_vista during process attach, which calls RtlLcidToLocaleName in ntdll_vista. If that function is delay-loaded (which is probably not allowed anyway during process-attach), the dll will not be initialized, the default user locale is 0 and RtlLcidToLocaleName fails.
Wine code doesn't check for failure and instead continues copying an uninitialized string buffer into the heap, causing heap corruption.

After removing the (redundant) add_delay_importlibs entry, this doesn't happen any longer.

This reverts commit 4f5478d. There is no effect on memory usage, because we load ntdll_vista anyway. See CORE-13361.
2026-05-16 06:59:24 +00:00
Hermès Bélusca-Maïto 85f2a67a9e [BOOTDATA] Add an "Install ReactOS" shortcut to the Live environment desktop
The shortcut spawns CMD.EXE in the background and runs a specific
command-line that determines where the reactos.exe installer is:

  cmd.exe /D /E:ON /C "start %SystemDrive%\%PROCESSOR_ARCHITECTURE:x86=I386%\reactos.exe"

An alternative could be:

  cmd.exe /D /C "for /F %f in ('"if %PROCESSOR_ARCHITECTURE%==x86 (echo I386) else (echo %PROCESSOR_ARCHITECTURE%)"') do start %SystemDrive%\%f\reactos.exe"

(In this second case an exact value comparison is made, contrary
to the first case where all instances of "x86" would be replaced.)

The reason for using CMD.EXE, is that the `PROCESSOR_ARCHITECTURE`
environment variable contains the "almost" correct value for the
architecture directory name where reactos.exe can be found, except
for the x86 case where `PROCESSOR_ARCHITECTURE` is set to "x86"
(as on Windows) but the directory is named "I386" (as on Windows again).
2026-05-15 19:17:02 +02:00
Hermès Bélusca-Maïto 8eea7255fd [BOOTDATA] Improve the environment-variables hack to keep them unexpanded when building on Windows
The environment variables used by some shell links for the Live-environment,
are passed as data by CMake on the MKSHELLLINK build tool command-line.
When building on Windows, they are transmitted to the tool via CMD.EXE,
and we have somehow to force CMD.EXE to keep these variables unexpanded.

Depending on the precise context where these variables are being used,
either use an "escaped" format with `^%`, as in: `^%SystemRoot^%` ,
or, surround the variable name with `^` instead: `%^SystemRoot^%` .
This second form appears to work when the variable is specified within
a quoted sub-string given to the CMD.EXE command-line.

Addendum to commit a46e1e96ec.
2026-05-15 19:17:01 +02:00
Hermès Bélusca-Maïto f9effd17bc [BOOTDATA] Simplify add_livecd_shortcut() parameters handling
Only handle `DESTINATION`, and transfer all the other parameters verbatim to `add_link()`.
Addendum to commits 3a3b16af0d, 8cb3980766, and a46e1e96ec (PR #8936).
2026-05-15 19:17:00 +02:00
Hermès Bélusca-Maïto eec8c97708 [USERINIT] In LiveCD/"MiniNT" mode, start the shell with a suitable environment block
Using `userenv!CreateEnvironmentBlock()` when starting the shell ensures
that, even if it's started as LocalSystem, its environment inherits the
"dynamical" environment variables created by SMSS at runtime (stored in
`HKLM\SYSTEM\CurrentControlSet\Session Manager\Environment`).

In ReactOS/Windows PE "MiniNT" mode, the Winlogon environment doesn't
contain these values, and doesn't start the Setup with this augmented
environment. (This is compatible with what Windows does, on WinPE or
during a clean installation.)
Winlogon creates an augmented environment only when a user logs in and
starts its shell (standard boot), which isn't the case in "MiniNT" mode.
It is thus the responsibility of the module that starts the shell instead
to do it: in ReactOS' case, userinit.exe in LiveCD mode.

As a result, we get access to the `COMPUTERNAME`, `NUMBER_OF_PROCESSORS`,
`OS`, and `PROCESSOR_*` environment variables, amongst others.
2026-05-15 19:16:59 +02:00
Hermès Bélusca-Maïto 9f5b0f1761 [USERINIT] Minor nits for StartShell() and friends; remove shell32 dependency 2026-05-15 19:16:58 +02:00
Timo Kreuzer f530cf99a0 [ROSTESTS] Get rid of some test lists 2026-05-15 16:50:48 +00:00
Timo Kreuzer 151c67ebfc [ROSTESTS] Implement automatic test discovery
This uses the START_TEST macro to create test entries in a ".test" section in the binary.
2026-05-15 16:50:48 +00:00
Timo Kreuzer 104d889c7a [ROSTESTS] Do not compile tests that should not run
With automatic test list creation, whatever is built will also run.
2026-05-15 16:50:48 +00:00
Timo Kreuzer dd27d0e194 [APITESTS] Make sure test functions are name correctly
With automatic test list creation, the function name (from START_TEST(name)) will also be the test name and some of those conflict with wine tests.
2026-05-15 16:50:48 +00:00
Timo Kreuzer 5f51f24697 [CRT_APITEST] Improve some tests
This is needed to automatically derive the test name from START_TEST.
2026-05-15 16:50:48 +00:00
Timo Kreuzer 86ced29104 [DELAYIMP_APITEST] Fix crash on Vista x64
For some reason on Vista x64 0xdeadbeef isn't detected as an invalid handle and the whole thing crashes. INVALID_HANDLE_VALUE on the other hand is detected as an invalid handle, so use that.
2026-05-15 13:31:25 +00:00
Hasan Eliküçük 8180cd20e6 [DESK] Improve Turkish (tr-TR) translation (#9005)
Both Efektler and Etkiler are correct Turkish words for "effects",
but they are used in different contexts.

- Efektler: Refers to special effects in media, movies, or sound
  (visual effects, sound effects).
- Etkiler: Refers to consequences, results, impacts, or influences
  (side effects, positive/negative impacts).

The former is more correct here, as desk.cpl changes visual effects.

Reviewed-by: Stanislav Motylkov <[email protected]>
2026-05-15 16:08:19 +03:00
Stanislav Motylkov 0e94ca28c6 [DESK] Fix positioning of "Less"/"More" labels across translations
- Harmonize, fix cut off text, make more space for it
- Shrink trackbar width where it's necessary (et-EE, hu-HU, tr-TR)
- Align "Less" to the right using RTEXT
- Align current resolution using CTEXT - same as SS_CENTER, but shorter
- Fix broken Y-position in Portuguese (pt-PT) translation
- Shorten words in Greek (el-GR) translation
2026-05-15 15:34:20 +03:00
Eric Kohl 4bb73fe3c9 [NETSH][REACTOS] Improve MatchTagsInCmdLine and add NsGetIfNameFromFriendlyName stubs.c
These functions are used by the WinXP ifmon.dll when the 'interface ip set address' command is used.
2026-05-14 15:19:50 +02:00
Katayama Hirofumi MZ 713888355b [NTGDI][FREETYPE] 2-line fix: Changing DPRINT1 to DPRINT
to avoid unnecessary log spam. @KRosUser suggests.
JIRA issue: N/A
2026-05-14 21:31:44 +09:00
Whindmar Saksit 6644a55343 [RAPPS] Automatically install package dependencies (#8963) 2026-05-14 13:23:40 +02:00
Hasan Eliküçük c6411ffa05 [CPL] Update Turkish (tr-TR) translation (#8982)
- [APPWIZ] Update Turkish (tr-TR) translation
- [DESK] Update Turkish (tr-TR) translation
- [HOTPLUG] Update Turkish (tr-TR) translation
- [INPUT] Update Turkish (tr-TR) translation
- [POWERCFG] Update Turkish (tr-TR) translation
- [SYSDM] Update Turkish (tr-TR) translation

Reviewed-by: Mahir Gül <[email protected]>
Reviewed-by: Vakkas Emre Yıldız <[email protected]>
Reviewed-by: Stanislav Motylkov <[email protected]>
2026-05-14 14:06:37 +03:00
Thomas Anderson b2b166c565 [USERSRV] Fix cut off text in all dialog translations (#8945)
CORE-19470
2026-05-14 13:36:25 +03:00
Ahmed ARIF 99ec6cbf07 [CMLIB] Fix hive validation loop for missing bins 2026-05-14 11:37:59 +02:00
Ahmed Arif b3a0868a18 [DHCPCSVC] Fix stop_selecting truncated from time_t to int on 64-bit (#8996)
This fixes a bug noticed during ARM64 bringup where DHCP never completed. In dhcpoffer, `stop_selecting` is declared int (32-bit) but assigned two time_t operands of 64-bit. 

The truncated value breaks the timeout, leaving DHCP stuck in S_SELECTING. This is masked on AMD64 because the RTC is implemented there and `time()` returns values that fit in 32 bits. On ARM64 the RTC isn't implemented yet, exposing the truncation.

CORE-18200
2026-05-14 12:26:28 +03:00
Stanislav MotylkovandAliaksandr Lebiadzevich b24dd41549 [KERNEL32_APITEST] Add tests for EnumSystemCodePages (#8986)
Inspired by PoC test code by Aliaksandr in CORE-20535.
These tests are passing on Windows.

Co-authored-by: Aliaksandr Lebiadzevich <[email protected]>
2026-05-14 11:32:25 +03:00
Eric Kohl 858b8fd42c [NETSH] Do not split arguments at whitespace between quotation marks 2026-05-13 23:35:09 +02:00
Hermès Bélusca-Maïto 9761df14f0 [BOOTDATA] Explicitly add "Profiles/Default User/My Documents" to the LiveImage (#8936)
CORE-19691

Removing the `livecd_start.cmd` entry also caused the "Profiles/Default User/My Documents"
directory to not be created in the LiveImage. When booting it, this
caused explorer.exe to hang while loading the desktop, for **some**
(but not all) non-english environments.
(Technically it should instead ignore the non-existing directory if it
cannot create or open it, or drop an error then continue execution...
But that's another bug for another time!)

Adding back the creation of this directory fixes the hang.
2026-05-13 22:16:08 +02:00
Hermès Bélusca-Maïto a46e1e96ec [BOOTDATA][CMAKE][MKSHELLLINK] Improve shell link shortcuts creation for the LiveImage (#8936)
CORE-15156, CORE-19691, CORE-19692

Finally get rid of the livecd_start.cmd hack introduced waaaay back
in commit ff6d7b0236 (r54514)!
See also commits ea682b6909 (r54512) and 71867403fd (r54513).

For target paths, use the shell "special shell folder" syntax:
`shell:windows\...` or `shell:system\...`, introduced in commit
7b081be46d (PR #7158) by Whindmar Saksit.

Specify an explicit icon path and index for the "Read Me.lnk" shortcut.

Includes ideas from PR #7154 by Katayama Hirofumi MZ.

The generated shell links are confirmed to work on ReactOS, but also on
Windows 2003 and Windows 7.

- Change the MKSHELLLINK icon parameter syntax to be: `-i [icon_path[,nr]]`
  where, either both `icon_path` and icon index are given, separated by
  a comma ',' , or, either the `icon_path` is given but the index is
  optional (default: 0), or, only the icon index is given, in which case
  the icon path is set to the target instead.

- Use a `VERBATIM` command-line for `add_custom_command()`, so that *nix
  builds can cope with parameters containing backslashes.

- The shortcut target path, working directory, command-line arguments,
  and icon path all may specify explicit Win32 environment variables
  (like `%SystemRoot%`, `%HOMEDRIVE%`, etc.). Because these environment
  variables are specified as data given to the build tool via CMake,
  **AND** we have to workaround keeping these variables unexpanded when
  they are transmitted to the tool via CMD.EXE (on builds made on Windows),
  specify these variables in an "escaped" format, using `^%` instead:
  `^%SystemRoot^%`, etc.
  Additionally these paths may be explicitly quoted and passed that way
  to the MKSHELLLINK tool.

  In order to deal with both unquoting the strings and unescaping the
  environment variables, introduce a helper function and invoke them on
  the aforementioned strings.
2026-05-13 22:16:07 +02:00