Commit graph

59064 commits

Author SHA1 Message Date
Thomas Faber 09f50240a3 [FASTFAT]
- Move FCB list removal to vfatDelFCBFromTable, since vfatAddFCBToTable does the insert. Fixes list corruption in vfatUpdateFCB.

svn path=/trunk/; revision=64843
2014-10-20 09:31:50 +00:00
Christoph von Wittich bd73779966 [cmd/help]
do not call wcslen on uninitialized variable

svn path=/trunk/; revision=64842
2014-10-20 09:21:08 +00:00
Christoph von Wittich c453a6b8d7 [cmd]
GetDateFormat expects size in characters

svn path=/trunk/; revision=64841
2014-10-20 08:47:57 +00:00
Thomas Faber 851df094ac [KERNEL32]
- Fix MSVC build

svn path=/trunk/; revision=64840
2014-10-20 08:30:55 +00:00
Thomas Faber 46c2db7796 [NPFS]
- Correctly interpret SeCreateClientSecurity return value in NpInitializeSecurity
- Always charge quota when allocating client context
- Specify explicit 0 tag when freeing allocations with unknown pool tag
- Misc readability fixes

svn path=/trunk/; revision=64839
2014-10-20 08:08:50 +00:00
Thomas Faber 00ee551726 [AFD]
- Do not pass IO_STATUS_BLOCKs when creating IRPs for asynchronous use. Fixes a use-after-free where AfdCloseSocket would cancel IRPs without actually waiting for their completion, and proceed to free the FCB, which contained these IO_STATUS_BLOCKs.
Note that using TdiBuildInternalDeviceControlIrp for these requests is broken in the first place, since it is intended for synchronous requests and requires a guarantee about the calling thread's lifetime. These functions (and their completion routines) should use IoAllocateIrp/IoReuseIrp/IoFreeIrp instead. However this can be fixed later; the incredibly annoying nonpaged pool corruption due to this that has been around for 10 years should be fixed with this commit.
CORE-8640 #resolve

svn path=/trunk/; revision=64838
2014-10-19 22:12:06 +00:00
Christoph von Wittich d0697e4b3d [videoprt]
fix uninitialized variable usage in error case

svn path=/trunk/; revision=64837
2014-10-19 21:57:29 +00:00
Pierre Schweitzer b70df35327 [FASTFAT]
- Implement vfatPrepareTargetForRename() that prepares for renaming. It tries to open target and deletes it if it exists and if allowed. And then, it opens the parent directory.
- Implement VfatSetRenameInformation() that actually does the renaming (call as SetInformationFile). It handles cases we we have (or we don't have) TargetDirectory provided. It sends notifications as appropriated on demands.
- Implement vfatRenameEntry() that renames an entry in place. So far, it only supports FATX entries renaming. FAT entries are a bit more complex. It falls back to vfatMoveEntry() in later cases.
- Implement VfatMoveEntry() that will move an entry accross directories (or in place for FAT). Its principles are simple: it deletes the entry in old parent, and recreate it in new parent, keeping file metadata & data.
- Modify VfatDelEntry() and VfatAddEntry() so that they can handle deleting an entry without touching its data and adding an entry with an already provided FCB and thus use the given metadata.
- Implement vfatDelFCBFromTable() which is just old code moved to new routine to allow reuse. It deletes a FCB entry from hash table. Doesn't deal with references!
- Implement vfatMakeFullName() which is mostly old code moved to new routine to allow reuse. It allocates buffer and copy data for FCB full name.
- Implement vfatUpdateFCB() that will update a FCB with new names and parent. It will remove anything related to old name and will recreate using new data. It will adjust references count.
- Modify vfatMakeFCBFromDirEntry() so that it calls vfatMakeFullName().
- Modify vfatReleaseFCB() so that it calls vfatDelFCBFromTable().
- Revert VfatOpenFile() to its previous features.
- Modify VfatCreateFile() to reimplement support for SL_OPEN_TARGET_DIRECTORY. It is way less hackish than previously. It also properly opens parent now, by incrementing its handle count and by setting appropriate access rights.

[KERNEL32]
- Rewritten MoveFileWithProgressW() to implement all the missing features that are used in Windows 2k3 including links and reparse points.
- Implemented BasepMoveFileDelayed() to replace deprecated add_boot_rename_entry(). This functions is matching the features implemented in SMSS.
- Implemented BasepMoveFileCopyProgress() which is used in MoveFileWithProgressW().
- Stubbed BasepNotifyTrackingService() which is not use at the moment (FastFAT, even in Windows doesn't provide such feature).
- Reimplemented ReplaceFileA(), MoveFileWithProgressA() to quit Winisms and use our internal helpers.
- Make MoveFileX() use MoveFileWithProgressX() directly.
- Fixed a few prototypes.

TL;DR:
This (huge) commit implements file and directory renaming in FastFAT driver. This allows getting rid of old implementation in kernel32 where files were force copied.

A feature is still missing, but Jérôme should implement it anytime soon (he prototyped it already): moving directories across volumes. This requires some work in BasepCopyFileExW().

Kudos to all the devs who helped me on this: Christoph, Hervé, Jérôme, Thomas.
This finally allows killing CR-52... It was about time!

svn path=/trunk/; revision=64836
2014-10-19 21:38:32 +00:00
Christoph von Wittich 39c0fb7d1f [regsrv32]
don't free hDll twice

svn path=/trunk/; revision=64835
2014-10-19 21:30:26 +00:00
Eric Kohl 7cd22fe762 [NET]
- Add the localgroup command. It does not work properly on ReactOS yet.
- Print a warning when the domain option of the accounts command is used. 

svn path=/trunk/; revision=64834
2014-10-19 20:12:19 +00:00
Pierre Schweitzer a0149739ce [NTFS]
Bugfixing... Part 9/X:
- Return the appropriate size for file size.
- Round the allocation to cluster size (as requested by the API).

This fixes metadata display when enumerating a directory in CMD.
What you get now: http://www.heisspiter.net/~Pierre/rostests/NTFS_listing_fixed.png

Time to fix all the rest!
D'oh!

svn path=/trunk/; revision=64833
2014-10-19 20:12:14 +00:00
Pierre Schweitzer 3b8b4734d6 [NTFS]
Bugfixing... Part 8/X:
- Actually, the files timestamp are already stored in the correct format on-disk... I should have listened to Thomas...

This fixes incorrect dates display when enumerating a directory contents. My apologies Thomas :-(.
Last to fix: the file size which is broken.

svn path=/trunk/; revision=64832
2014-10-19 19:48:52 +00:00
Timo Kreuzer 211e68d9b1 [NTDLL_APITEST] Disable NtContinue test when runtime checks are enabled
[USER32_APITEST] Disable WndProc test when runtime checks are enabled
[KERNEL32_WINETEST] Zero initialize a buffer. This is necessary, since we fail all calls to GetVolumePathNamesForVolumeNameW and thus never get any data into the buffer, which can later result in a buffer-overrun, when doing a lstrlenW on it.

svn path=/trunk/; revision=64831
2014-10-19 19:37:55 +00:00
Pierre Schweitzer 064ac54c96 [NTFS]
Bugfixing... Part 6/X:
- Properly return the size of the NTFS volume (and not a buggy size)
- Properly return the characteristics of the NTFS volume

svn path=/trunk/; revision=64829
2014-10-19 17:43:37 +00:00
Hermès Bélusca-Maïto aa15945793 [NTVDM]: fix MIPS count in cases display delays get longer than 1 sec...
svn path=/trunk/; revision=64828
2014-10-19 17:24:57 +00:00
Amine Khaldi fabcc9ac05 [USER32]
* We're not using any debugging routines here.

svn path=/trunk/; revision=64827
2014-10-19 17:24:43 +00:00
Timo Kreuzer be627c2e59 [WIN32K]
Fix uninitialized variable use.

svn path=/trunk/; revision=64826
2014-10-19 16:37:27 +00:00
Pierre Schweitzer e0b6d85507 [NTFS]
Bugfixing... Part 6/X:
- Properly compute file name length.

This makes directory enumeration return complete file/directory names.
Note that it's also possible to enumerate the files in open dialog of notepad (for instance :-))

Opening a subdirectory/file is broken though. To be investigated.

svn path=/trunk/; revision=64825
2014-10-19 16:29:38 +00:00
Aleksandar Andrejevic bff1bdafaf [FAST486]
The r64823 patch was not properly merged.


svn path=/trunk/; revision=64824
2014-10-19 15:02:37 +00:00
Aleksandar Andrejevic c46f3aa372 [FAST486]
Implement the HLT instruction.
Remove the IdleCallback, since it's unused and probably won't be used.
(The load reduction will be implemented in NTVDM instead.)


svn path=/trunk/; revision=64823
2014-10-19 14:46:02 +00:00
Timo Kreuzer 50e22a432f [USER32]
Fix uninitialized variable use/warnings in
- RegisterClassExWOWW (found by MSVC runtime checks)
- IntDrawState (CID-514399)
- IntCallWindowProcA (CID-514389)
- IntCallWindowProcW (CID-414390)
- SendMessageA (CID-514392)
- SendMessageW (CID-514393)
- SendMessageTimeoutA (CID-514441)
- SendMessageCallbackA (CID-514442)
- SendNotifyMessageW (CID-514443)
- SendNotifyMessageA (CID-514444)
- User32CallWindowProcFromKernel (CID-514445)
- DesktopWndProcA (CID-716765)

svn path=/trunk/; revision=64822
2014-10-19 13:17:49 +00:00
Timo Kreuzer 74cb166477 [CRT]
Fix MSVC global constructor initialization.

svn path=/trunk/; revision=64821
2014-10-19 10:27:22 +00:00
Hermès Bélusca-Maïto a4a867f83a Ok Arch, it's good to remove unuseful brackets, but don't exaggerate too much. Also check how the RtlInsertAsLeft/RightChild macros are defined. Since MS don't use the nice do { ... } while(0) for them, you cannot just use the if (blah) foo(); else bar(); to do the job, but you need the extra-brackets. And you cannot just change the macros definitions to not "break" headers compatibility (or... idiocies).
svn path=/trunk/; revision=64820
2014-10-19 00:05:18 +00:00
Hermès Bélusca-Maïto b858c18208 Fix whitespace, and get rid of that sh*tty K&R style.
svn path=/trunk/; revision=64819
2014-10-18 23:59:25 +00:00
Hermès Bélusca-Maïto eea6067270 [RTL]
Implement RtlDeleteNoSplay which is really just a copy/paste of RtlDelete, but without splaying the tree after deletion of the node. Needed by the filter driver fltmgr.sys. Dedicated to Mr. V ;)

svn path=/trunk/; revision=64818
2014-10-18 23:51:35 +00:00
Timo Kreuzer 2b55d972ca [CRT]
Implement __do_global_ctors for MSVC

svn path=/trunk/; revision=64817
2014-10-18 21:38:07 +00:00
Timo Kreuzer 400a2c65cf [RunTmChk]
- Implement _RTC_GetErrDesc, _RTC_SetErrorFuncW, add stubs for _RTC_NumErrors, _RTC_SetErrorType, _RTC_SetErrorFunc
- Implement _RTC_DefaultErrorFuncW which will be used, when no other error func was set
- Implement _RTC_InitBase, which will be called from _RTC_Initialize, and which in turn calls either _CRT_RTC_INITW, if CRT was linked, or a local _CRT_RTC_INITW0, which in turn will return the error function to use. This allows us to use a custom error function for all modules that link to (MSV)CRT. Only user32 does not really fit into here, since it uses the same startup code but does not link to MSVCRT.

[CRT]
- Call _RTC_Initialize from __main before initializing the global constructors, but fall back to a dummy _RTC_NoInitialize(), when RunTmChk.lib was not linked. Now we properly initialize both our own as well as MS RunTmChk lib.

svn path=/trunk/; revision=64816
2014-10-18 21:22:52 +00:00
Timo Kreuzer 91dd4cbea0 [FREELDR]
- Improve memory layout by moving the 32/64 bit stack to 0x7000-0xF000 and moving the BIOSCALLBUFFER up a bit. This gives us 56 KB additional space for freeldr itself. This allows to compile freeldr with /RTC1 (x86 only, the x64 version would get too big). And yes, it works.
- Implement FrLdrBugCheckWithMessage to get some useful messages on the screen and use it in MmCheckFreeldrImageFile
- Merge the .rtc section into the .text section, when we use RTC1
- Check the location of the Extended BIOS Data Area, add it to the memory descriptors and make sure we have enough space to put freeldr in. If the location of the EBDA is too low, print out a nice message on a blue screen :)

svn path=/trunk/; revision=64815
2014-10-18 21:12:12 +00:00
Hervé Poussineau 8325f695c5 [ACPI] Fix some traces
svn path=/trunk/; revision=64814
2014-10-18 21:09:31 +00:00
Hervé Poussineau 6cba55f89e [CMLIB] Add an assert to track potential registry corruptions
svn path=/trunk/; revision=64813
2014-10-18 21:08:40 +00:00
Timo Kreuzer e1db75d329 [AMD64]
Fix build

svn path=/trunk/; revision=64812
2014-10-18 21:01:17 +00:00
Timo Kreuzer e80c501cf4 [FREELDR]
Apply proper indentation, no code change.

svn path=/trunk/; revision=64811
2014-10-18 19:01:53 +00:00
Amine Khaldi 423388ab06 [USER32]
* WINEMessageTypeNames is only used in a case wrapped inside #ifndef __REACTOS__.

svn path=/trunk/; revision=64810
2014-10-18 18:41:15 +00:00
Amine Khaldi 02c5aaa0bd [USER32]
* We're not using any debugging routines here.

svn path=/trunk/; revision=64809
2014-10-18 18:37:28 +00:00
Amine Khaldi 2864422049 [CMAKE/MSVC]
* Rename the lib to runtmchk. Really.
CORE-8626

svn path=/trunk/; revision=64808
2014-10-18 14:45:02 +00:00
Amine Khaldi df43f0f0a0 [CMAKE/MSVC]
* Use the runtime checks globally in ReactOS now, not just for user mode modules.
* We no longer need the MS support lib, as Timo kindly implemented one for ReactOS.
* Rename the lib to runtmchk.
[PSEH][CRT]
* Remove some constrictions to seh.s source files, we no longer need them.
[KERNEL32]
* We no longer need to explicitly link to the runtime checks lib.
[FREELDR][KEYBOARD][NTOS][SETUPLDR]
* Link to the runtime checks lib when this mode is enabled.
CORE-8626

svn path=/trunk/; revision=64807
2014-10-18 14:22:09 +00:00
Amine Khaldi ee8be36736 [BMFD]
* Use set_module_type() instead of the combination of set_entrypoint(), set_subsystem() and set_image_base().
* Remove the now redundant bugcodes dependency.
[FRAMEBUF_NEW]
* Remove redundant bugcodes dependency.

svn path=/trunk/; revision=64806
2014-10-18 14:16:54 +00:00
Amine Khaldi 9b9d883909 [FRAMEBUF_NEW]
* Use set_module_type() instead of the combination of set_entrypoint(), set_subsystem() and set_image_base().

svn path=/trunk/; revision=64805
2014-10-18 14:12:41 +00:00
Amine Khaldi 9f58c0ec69 [CMAKE]
* Fix inconsistencies around kernel mode dlls handling.

svn path=/trunk/; revision=64804
2014-10-18 14:09:11 +00:00
Hermès Bélusca-Maïto dcd0795cd0 [FAST486]: Implement a basic support for the Trap Flag.
svn path=/trunk/; revision=64803
2014-10-18 14:08:50 +00:00
Amine Khaldi 9333ffdf62 [APITESTS/W32KDLL_*]
* Use set_module_type() instead of set_entrypoint().

svn path=/trunk/; revision=64802
2014-10-18 14:00:20 +00:00
Amine Khaldi 2ebfae067a [CMAKE]
* Let the minimum required CMake version be 2.8.12 so that *cough* people with old RosBE would be warned to update it! (I'm looking at you, Arch).

svn path=/trunk/; revision=64801
2014-10-18 13:13:20 +00:00
Pierre Schweitzer e2a846bea8 [NTFS]
Bugfixing... Part 5/X:
- Actually, we don't care about the name in the file index. We don't need it to read the data attribute, it's unnamed. And the returned name was buggy (this still needs work though)
- When we are getting a file record which is a directory, there is NO data attribute. Don't attempt to read it. This prevents failure on directory entry return.

These fixes enable NTFS directory listing in ReactOS!
Even though, more fixes are required. So far, the metadata of the files are kind of broken. Explorer seems to be unable to list files.
This keeps anyway being a major step forward, as this was totally impossible a month ago ;-).

For these willing to see NTFS in action in ReactOS: http://www.heisspiter.net/~Pierre/rostests/NTFS_listing.png

svn path=/trunk/; revision=64800
2014-10-18 12:18:37 +00:00
Kamil Hornicek 4a58f77497 [SHELL32]
- fix a copy paste error
CID 1101990

svn path=/trunk/; revision=64799
2014-10-18 10:33:49 +00:00
Thomas Faber 71451cf5dd [MOUNTMGR]
- Fix IsDriveLetter. CID 1206760.

svn path=/trunk/; revision=64798
2014-10-18 10:11:02 +00:00
Thomas Faber e383d6c605 [CDROM]
- Remove invalid frees. CID 511759.

svn path=/trunk/; revision=64797
2014-10-18 09:52:14 +00:00
Amine Khaldi c0e495f046 [CMAKE]
* Addendum to r64795.
* Also remove unneeded wine linking and ntdll importing.
* Remove redundant defines.

svn path=/trunk/; revision=64796
2014-10-17 23:29:24 +00:00
Amine Khaldi 2bdcf8789d [CMAKE]
* Make the minimum required version 2.8.
* Remove redundant psdk dependencies.
* Tidy up CMake files.

svn path=/trunk/; revision=64795
2014-10-17 23:28:29 +00:00
Hermès Bélusca-Maïto fd8e3415c8 [NTVDM]: simplify code and add a reference link concerning the CrtColorPaletteMask mask.
svn path=/trunk/; revision=64794
2014-10-17 22:27:34 +00:00
Pierre Schweitzer 60d3d2c399 [NTFS]
Bugfixing... Part 4/X:
- Fix a nasty bug in NtfsLookupFileAt() (how did it work before?). The name parsing was wrong (no progress was being made) and thus was leading to an infinite loop in directory browsing.
- Fix a lovely bug coming from a non-documented feature in NTFS. To properly read the MFT index, you've to apply a mask. Do this to properly handles MFT record. This fixes returned MFT index which allows resuse.
- Do not allow returning MFT records < 0x10 for now. Not sure whether it should be allowed, but so far, these are MFT special records, so let's forget about it. IIRC, they are available on Windows. But trying to chase another bug for the moment.

This does not fix yet directory enumeration.

svn path=/trunk/; revision=64793
2014-10-17 22:17:59 +00:00