Fix the console properties dialog, when launching and transmitting console properties. Before, the properties dialog was directly launched by the console server (consrv), running with CSRSS (System) privileges, what constituted a security hole. Now, I create a remote thread in the running process owning the console for launching the properties dialog (thus it has only user privileges, and not System ones anymore). For that purpose, I basically took the technique described in the following paper (Cesar Cerrudo, "Story of a dumb patch", http://www.argeniss.com/research/MSBugPaper.pdf or http://www.scn.rain.com/~neighorn/PDF/MSBugPaper.pdf), where basically the console server shares the console properties via a shared memory section with the console properties dialog dll. The address of the thread which launches the dialog in the context of the console app is given to the console server the same way as we do for the control handler (called e.g. when you press Ctrl-C, etc...)
Of course this is quite hackish, because you have the GUI interface split between the console server and the console properties dialog dll. Something far more elegant would be to put all the GUI thingie into a dedicated dll or exe, running with the same privileges as the console program itself (a kind of console -- or terminal -- emulator).
[CONSOLE.DLL]
Fix retriving / setting colors.c and other things.
[CONSRV.DLL]
- Fix retrieving / setting console properties from the registry (via the HKCU\Console\* keys), via the shell shortcuts (not totally done at the moment, because somebody has to implement properly that thing : http://msdn.microsoft.com/en-us/library/windows/desktop/bb773359(v=vs.85).aspx (NT_CONSOLE_PROPS structure stored as a shortcut data block) (at application launching time), and via the console properties dialog.
- Few DPRINTs removed.
svn path=/branches/ros-csrss/; revision=58415
Remove pre-saved console default settings in the registry. They will be set by consrv itself at initialization (Work In Progress).
svn path=/branches/ros-csrss/; revision=58357
- Add ENABLE_INSERT_MODE, ENABLE_QUICK_EDIT_MODE and ENABLE_EXTENDED_FLAGS flags.
- Add GetConsoleAliasExesA/W and GetConsoleAliasExesLengthA/W api definitions.
[DOSKEY]
Remove unneeded definitions since now these are declared in the psdk.
svn path=/branches/ros-csrss/; revision=58345
- Add an icon.
- Fix some labels in the property box and the disposition of controls in english and french resources (not in all because positions change between languages and I've no time synchronizing by hand all the resource files, removing the differences).
svn path=/branches/ros-csrss/; revision=58343
Code reorganization only : move the console-related initialization functions into a dedicated file, and create a specific header to hold console function definitions.
svn path=/branches/ros-csrss/; revision=58306
- Introduce a CONSOLE_PROPS structure to hold console properties such as its title or startup attributes it should have. Initialized at console application launch time. I have to see how could it be possible to merge this structure with some parts of the GUI_CONSOLE_DATA structure and of the ConsoleInfo structure from console.dll (in /dll/cpl).
- Use a helper function to initialize the CONSOLE_PROPS structure in kernel32, at console app start or when calling AllocConsole.
- In BasepInitConsole, do initialization of CONSOLE_PROPS and related only if we are about to launch a console app.
[CONSRV]
- Adapt CONSOLE_CONNECTION_INFO and CONSOLE_ALLOCCONSOLE structures to take into account CONSOLE_PROPS.
- Fix the way we are setting console titles.
- Add experimental support for loading console properties and title and icon from shell links, thanks to the helper LoadShellLinkInfo. However I'm using there Shell COM facility to extract link properties (I could do it "the RAW way", however I would then know the format of link files, that I don't know and that I don't want to mix up with the console code). Therefore I must add dependencies to uuid and ole32 libraries. Note that icons are used in GUI consoles only (use the PrivateExtractIconExW function to retrieve both handles to the big and small icons at the same time).
Part 1/2
[CONSRV]
- Remove an unuseful xxxInitScreenBuffer function in the virtual functions console table.
- In GUI_CONSOLE_DATA structure and related functions, temporarily explicitely mark which members may be used for both GUI and TUI consoles (for a future simplification).
- Add temporary debug prints when we are setting console icon, to see the flow of calls (will be removed just before merging back to trunk).
- Add temporary debug prints in ConSrvInitConsoleScreenBuffer and ConioDeleteScreenBuffer, to figure out how SBs are initialized.
svn path=/branches/ros-csrss/; revision=58305
- Further compactify console allocation / attach code by putting common code into helper functions.
- Now, the default title of a console window is... "ReactOS Console" (and not command prompt since a console window isn't only reserved to command prompts).
svn path=/branches/ros-csrss/; revision=58260
- Add a macro which specifies how much space chars a TAB is.
- Implement BELL ANSI character handling (basic) and add temporary DPRINTs to see who is called (by the way, Beep() functions seems not to work correctly).
svn path=/branches/ros-csrss/; revision=58253
Implement IoCancelFileOpen().
You can read: http://www.osronline.com/showThread.cfm?link=20807
Even though the proposed implementation is closer to W2K implementation than to W2K3 implementation
In W2K3, no IRP is issued with major close.
svn path=/trunk/; revision=58244
Implement IopAllocateIrpMustSucceed() which is designed to *normally* always return an IRP.
Even in low memory situations (if you wait enough).
svn path=/trunk/; revision=58243
Revert my change of loading the win32k kernel-mode subsystem driver by reading the Kmode value and use instead a hardcoded value, per request of Alex.
I'm wondering why Windows wouldn't allow you to use a personalized value there and forces you to use win32k with this name, placed in \SystemRoot\System32 directory and not in an other place.
svn path=/trunk/; revision=58241
- Uniformize the error messages and also, SmpParseCommand is SmpParseCommandLine in fact.
- Remove an unneeded cast since Flags is already ULONG.
svn path=/trunk/; revision=58238
Modify driver acquiring/releasing privilege according to r58233. The corresponding modification in services.c will be done at the next synchronization.
svn path=/branches/ros-csrss/; revision=58234
Fix acquiring/releasing driver-loading and unloading privilege (see r57754) by using the RtlAdjustPrivilege API instead of using the standard user-mode Win32 API (thus get rid of calling LSA when calling LookupPrivilegeValueW).
svn path=/trunk/; revision=58233
- Zero-out some allocated memory.
- During my investigations preceding the implementation of AttachConsole (r58166), I wanted (in a first attempt; finally I've found a better way to achieve what I wanted to do) to retrieve the CSR_PROCESS structure of the parent of a given process. I've found the 'Parent' member in the CSR_PROCESS structure, however this member was always initialized to NULL when new processes were created via CsrCreateProcess (and via the call to CsrInsertProcess). After looking at some informating here (http://svn.reactos.org/svn/reactos/trunk/reactos/include/subsys/csr/server.h?r1=17363&r2=17362&pathrev=17363) and there (http://forum.sysinternals.com/csrwalker-processes-detection-from-user-mode_topic15457.html), I became convinced that the 'Parent' member was unexistent starting from Windows Server 2003. Also, after much more investigation, I've found that the CsrInsertProcess function was called with only two parameters starting from Windows Server 2003 (and still continues in Windows 7), the always-NULL paramater being removed.
Therefore, I remove that unneeded parameter from CsrInsertProcess and the corresponding 'Parent' member from CSR_PROCESS.
svn path=/branches/ros-csrss/; revision=58232
Clean-up IntReadConsoleOutputCode a little bit.
[CONSRV]
Fix a buffer overflow in SrvReadConsoleOutputString, which was translated sometimes into heap corruption and assert, triggered when freeing a remote captured buffer in csrsrv, when executing kernel32_winetest console, just during a call to ReadConsoleOutputCharacterA.
Nevertheless I still keep the culprit code (commented-out now) because it might be useful in the future.
svn path=/branches/ros-csrss/; revision=58229
- Actually put in the C++ headers what our CRT implements, instead of some random mix of libstdc++ and who knows what. This means the header contents are somewhat outdated and non-standard, but that's preferable to unusable
- Fix a forward declaration in math.h
svn path=/trunk/; revision=58228
Fix a fixme in IopParseDevice() by calling SeOpenObjectAuditAlarm().
Won't change anything right now since it calls a stub.
svn path=/trunk/; revision=58226
- Use set_cpp instead of hand-coding all the parameters
- Use comutil.h and link with comsupp unconditionally, since we now have them
- Use STLPort-compatible filebuf constructor for TCHAR iostreams
- Fix a few MSVC and GCC 4.7 errors/warnings
svn path=/trunk/; revision=58224
- Import C++ compiler support headers from mingw-w64 (with some fixes)
- Implement the required parts of the comsupp library
svn path=/trunk/; revision=58223
- Do not allow multiple "Taskbar and Start Menu Properties" windows. Based on patch by Edijs Kolesnikovičs & Grégori Macário Harbs.
CORE-6885 #resolve
svn path=/trunk/; revision=58217
- Add missing domain information types to ntsam.h and fix conflicts in ntsecapi.h and sam.idl.
- Add SamChangePasswordUser, SamChangePasswordUser2 and SamChangePasswordUser3 stubs.
svn path=/trunk/; revision=58216
* This significantly shrinks the dependency tracking data and the compiled objects size, which speeds up the whole build process (especially the incremental builds) accelerating the daily development as a result.
* No intended code changes, ~27% smaller build. Enjoy ;)
svn path=/trunk/; revision=58214
Rename functions to their new scheme: ConSrv* instead of Win32Csr* or Conio* (with some exceptions for the latter case).
No code changes.
svn path=/branches/ros-csrss/; revision=58213
- Start to implement waiting threads notifications. They can be notified by:
* the required action (screen displaying lock/unlock, presence of new characters in the input buffer),
* the fact that the application terminates,
* we close a (input) handle.
TODO: When we notify them by calling CsrNotifyWait, they are not dereferenced automatically, but they can be
by calling a dedicated CSR function. We need to know where it is the best to dereference them.
- Correct a bug introduced in revision r58191, which broke console input mode changes (in SrvSetConsoleMode and SrvGetConsoleMode).
svn path=/branches/ros-csrss/; revision=58211