48 Commits
Author SHA1 Message Date
Ahmed Arif ed367320c2 [DHCPCSVC] Fix DHCP option stack overflow (#9056)
Reject malformed DHCP subnet mask and router option lengths
before setup_adapter() consumes them.

This prevents attacker-controlled option lengths from expanding DHCP
option bytes into a fixed stack buffer while preserving valid
router address lists.

Validate the option lengths before use, keep router lists limited to
complete IPv4 addresses, and format registry IPv4 strings with
RtlIpv4AddressToStringA().

Booted amd64 QEMU image: no DHCP/client networking regression observed.
2026-07-30 18:20:50 +03:00
Eric Kohl 2e13f97a62 [DHCPCSVC][REACTOS] Pass the SendParams parameter to the RequestParams server function 2026-05-24 10:58:01 +02:00
Eric Kohl 60c8612e73 [DHCPCSVC] Improve debug message and parameter checks for DhcpRequestParams 2026-05-23 23:43:26 +02:00
Eric Kohl 7dbfc3f2b6 [DHCPCSVC][PSDK] Add parameter checks to DhcpRegisterParamChange
Also add the required definition of DHCPCAPI_REGISTER_HANDLE_EVENT.
2026-05-23 16:26:32 +02:00
Eric Kohl 3733f5f71e [DHCPCSVC] Add DhcpDeRegisterParamChange and DhcpRegisterParamChange stubs 2026-05-23 14:49:29 +02: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
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
Eric Kohl 0bd6afd1a8 [DHCPCSVC] Set the AddressType value for network interfaces
AddressType 0: Static address, DHCP provided address or static address from alternate configuration
AddressType 1: Automatic Private IP Address (APIPA)
2026-04-18 16:51:17 +02:00
Eric Kohl cbfc755c2f [DHCPSVC][PSDK][IDL] Add the DhcpAcquireParametersByBroadcast stub and remove the DhcpQueryHWInfo function 2026-04-13 01:06:31 +02:00
Eric Kohl ed5124b7a8 [DHCPCSVC][PSDK][IDL] Implement the enable/disable DHCP part of DhcpNotifyConfigChange/Ex 2026-04-12 18:29:10 +02:00
Eric Kohl 98b9b434c6 [DHCPCSVC] Implement alternate configuration
- Set the ip address, subnet mask and default gateway when an alternate configuration has been configured.
- Set registry values for the alternate configuration and APIPA.
2026-04-12 14:35:48 +02:00
Eric Kohl 10092f8466 [DHCPCSVC] Load and update the alternate configuration data 2026-04-07 00:55:32 +02:00
Eric Kohl 4b9adaa971 [DHCPCSVC] Add the client code and server stub for DhcpFallbackRefreshParams
DhcpFallbackRefreshParams is called by the TCPIP notification object after the alternate configuration has been changed.
2026-04-06 13:42:03 +02:00
Timo Kreuzer 5d6987462d [DHCPCSVC] Fix GCC 13 stringop-overflow warning
C:/ReactOS/reactos/base/services/dhcpcsvc/dhcp/adapter.c: In function 'AdapterDiscoveryThread':
C:/ReactOS/reactos/base/services/dhcpcsvc/dhcp/adapter.c:326:28: error: 'AdapterFindByHardwareAddress' accessing 16 bytes in a region of size 8 [-Werror=stringop-overflow=]
  326 |             if ((Adapter = AdapterFindByHardwareAddress(Table->table[i].bPhysAddr, Table->table[i].dwPhysAddrLen)))
      |                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:/ReactOS/reactos/base/services/dhcpcsvc/dhcp/adapter.c:326:28: note: referencing argument 1 of type 'u_int8_t[16]' {aka 'unsigned char[16]'}
C:/ReactOS/reactos/base/services/dhcpcsvc/dhcp/adapter.c:544:15: note: in a call to function 'AdapterFindByHardwareAddress'
  544 | PDHCP_ADAPTER AdapterFindByHardwareAddress( u_int8_t haddr[16], u_int8_t hlen ) {
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-03-18 17:29:12 +02:00
Eric Kohl 16de117a01 [DHCPCSVC] Add required winnls.h 2026-03-09 00:03:04 +01:00
Eric Kohl 1f8f73d3b2 [DHCPCSVC] DhcpHandlePnPEvent: Set the binary class id
Also add a bit of documentation
2026-03-08 23:04:22 +01:00
Eric Kohl 3f9f0e2a96 [PSDK][DHCSCSVC][IPCONFIG] Add DhcpHandlePnpEvent stub and use it in ipconfig
Ipconfig uses DhcpHandlePnpEvent to notify the dhcp client of a changed class id.
2026-03-08 12:22:47 +01:00
Eric Kohl dc97a4d380 [DHCPCSVC][IDL] Implement DhcpRemoveDNSRegistrations()
The dnsapi.dll part is still missing.
2025-08-14 14:44:04 +02:00
Eric Kohl 0bd6b3dd58 [DHCPCSVC][PSDK] Clean up, add some documentation and missing declarations 2025-08-13 14:58:27 +02:00
Eric Kohl 0f4e223ce7 [DHCPCSVC] Implement the dhcp release message and fix the dhcp registry values
- Do not modify the EnableDHCP value as it should not be changed by the service.
2025-08-12 23:25:38 +02:00
Eric Kohl 94a6102cd2 [DHCPCSVC] Convert the pipe based client-server interface to RPC 2025-08-03 22:39:36 +02:00
Eric Kohl a6d3787507 [DHCPCSVC] Remove obsolete functions
DhcpLeaseIpAddress, DhcpReleaseIpAddressLease and DhcpRenewIpAddressLease have been replaced by DhcpAcquireParameters and DhcpReleaseParameters
2025-08-03 14:14:18 +02:00
Eric Kohl 7e1d9ef9bf [DHCPCSVC] Add DhcpEnumClasses and DhcpHandlePnpEvent stubs 2025-07-26 19:00:04 +02:00
Eric Kohl cb0c31945e [DHCPCSVC] DSAcquireParams and DSReleaseParams must return an error code 2025-07-19 10:52:46 +02:00
Eric Kohl 28b35625dd [DHCPCSVC] Change AdapterName parameter to UNICODE
DhcpAcquireParameters and DhcpReleaseParameters use a UNICODE AdapterName parameter.
2025-07-18 23:31:21 +02:00
Eric Kohl 0e5df9c51c [DHCPCSVC] Fix the options request list and add the class identifier to requests 2025-07-12 18:57:28 +02:00
Eric Kohl 8bf9b670ed [DHCPCSVC] Enable DHCP for wired Ethernet and wireless IEEE802.11 network interfaces
Fixes CORE-20244
2025-06-22 10:57:50 +02:00
Eric Kohl babe6046e5 [DHCPCSVC] Fix exception on service restart
CORE-14390
2025-05-31 16:16:34 +02:00
Eric Kohl 4514e748f0 [DHCPCSVC] Implement DhcpAcquireParameters and DhcpReleaseParameters
TODO: The AdapterName parameter should be a unicode string. Fix this later.
2025-04-21 14:45:51 +02:00
Eric Kohl 2c2cdfddd3 [DHCPCSVC] Move the public header rosdhcp_public.h
This header is not to be used outside of dhcpcsvc because it contains the data structures for the communication between the client and the server part within dhcpcsvc. That is why it is moved inside of dhcpcsvc and renamed to rosdhcp_pipe.h.
2025-04-19 22:55:52 +02:00
Eric Kohl 2fe3073697 [DHCPCSVC] Remove the now obsolete function DhcpRosGetAdapterInfo 2025-04-19 11:42:09 +02:00
Eric Kohl aa6c33b21c [DHCPCSVC] Set more registry values when an ip address has been provided
Set the DhcpServer, LeaseObtainedTime and LeaseTerminatesTime values.
2025-04-18 19:26:23 +02:00
Timo Kreuzer bf95874c2d [REACTOS] Improve handling of non-standard names
- Link oldnames instead of defining names
- Define _CRT_DECLARE_NONSTDC_NAMES to 1 where needed
- Remove header hacks
2024-10-20 14:12:25 +03:00
Timo Kreuzer e4930be4ff [REACTOS] Use the ISO C and C++ conformant names: _wcsicmp, _stricmp
Stop using non-conforming wcsicmp, stricmp, strcasecmp
2024-10-20 14:12:25 +03:00
George Bișoc eccae203e0 [DHCPCSVC] Set up a security descriptor for DHCP named pipe 2022-05-06 10:09:50 +02:00
Eric Kohl 69bd857e39 [dhcpsvc][srvsvc][wkssvc] Servcies run by svchost must be shared process services 2022-01-16 17:59:41 +01:00
Hermès Bélusca-Maïto 9393fc320e [FORMATTING] Remove trailing whitespace. Addendum to 34593d93.
Excluded: 3rd-party code (incl. wine) and most of the win32ss.
2021-09-13 03:52:22 +02:00
Eric Kohl 033b6639e4 [DHCPCSVC] Make the DHCP client service stoppable
- Make all threads (pipe thread, adapter discovery thread and dispatcher thread) wait on the stop event.
- Close shared resources in the main (dispatcher) thread after the pipe thread and the adapter discovery thread have shut down.

This enables us to stop and restart the DHCP client properly.

CORE-14390
2021-08-08 14:10:25 +02:00
Eric Kohl 2047cf3613 [DHCPCSRV] Send an ARP request to check if an automatic private address is available 2021-05-24 15:18:58 +02:00
Hervé Poussineau 1ff3d1c395 [DHCPCSVC] Change automatic address assignment to use hardware address
According to RFC 3927, the pseudo-random number generation algorithm MUST be chosen
so that different hosts do not generate the same sequence of numbers, and that the
pseudo-random number generator SHOULD be seeded using a value derived from the
IEEE 802 MAC address, so that a host will usually select the same IPv4 Link-Local
address each time it is booted.
2021-04-20 18:28:36 +02:00
Amine Khaldi 139a3d6661 [CMAKE] Implement PCH builds with target_precompile_headers. CORE-16905 2020-06-06 21:58:41 +03:00
Timo Kreuzer 7611cc2b12 [REACTOS] Fix SIZE_T related warnings 2019-08-15 14:20:00 +02:00
Hervé Poussineau 15a828c86d [DHCPCSVC] Eliminate unused code and associated parameters
This is mostly the same as OpenBSD commit b4e4f16f2ae0ddf1e786bb12c99b8c51170a1a33
2019-04-07 18:32:28 +02:00
Jérôme Gardou 23373acbb9 [CMAKE] Use modules instead of shared libraries
There is no need to compile our DLLs as shared libraries since we are
managing symbols exports and imports through spec files.

On my system, this reduces the configure-time by a factor of two.
2019-04-06 17:43:38 +02:00
Pierre Schweitzer f57b1d02d4 [DHCPSVC] Properly stub DhcpRequestParams()
This will avoid crash upon Google Chrome start.

CORE-15422
2018-12-06 22:26:10 +01:00
Eric Kohl 9febc82acf [DHCPCSVC] Add the ability to stop the DHCP client
- Use a stop event to terminate the dispatch loop.
- Report to the services manager that the service can be stopped or shut-down while it is running.

CORE-14390
2018-03-21 21:07:26 +01:00
Thomas Faber 87d3fdf99e [DHCPCSVC] Fix a memory leak in bind_lease introduced in r14645 (!). CORE-14353 2018-02-22 11:53:34 +01:00
Colin Finck c2c66aff7d Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys. 2017-10-03 07:45:34 +00:00