Word 2010 support Part 5: NTLM & FOSDEM 2017 preparation

by hbelusca | January 30, 2017

Hello everyone! As you've seen my activity in the blogs has been reduced quite a lot since beginning January,so here is a summary of what I did during the month of January.

First two weeks of January (until ~= 15)

In my previous report of last time, I explained that what blocked my progress on Word 2010 was the absence of NTLM authentication support for the installation to continue & finish. After playing locally with the in-progress implementation of NTLM by Samuel Serapión, that can be found in the "sspi-bringup" branch, to see how the Word 2010 installation would behave, I found that this generated new errors reported by the RPC layer. Therefore further investigations are in order, and this would include a reviewing of Samuel's code as well as writing tests for the NTLM implementation to check whether it works properly, and potentially playing with RPC internals.

To refresh my ideas before digging further into that problem, I tried an alternate approach by having a look at the PowerPoint Viewer 2010, theorizing that it was certainly based on the same general codebase as the other Office 2010 products, particularly in what concerns its GUI (and the possible graphics calls it could do), as well as the other Office (Word & Excel) viewers. By checking at the debug logs, I have found two recurring points that could be interesting to implement:

  1. the NtUserExcludeUpdateRgn API (the win32k-kernel-mode side of the user32 ExcludeUpdateRgn API) being unimplemented (see JIRA report CORE-12649). As soon as I started working on it, ReactOS developer James Tabor mentioned to me he already had a patch for it, and so I let him work on this issue (and I'll come back to this issue after the FOSDEM), and

  2. implementing a missing functionality:

    fixme:(dll/win32/shell32/CShellLink.cpp:1314) (0232FC98): WIN32_FIND_DATA is not yet filled.

    that popped out each time one opened the "Open file..." or "Save as..." dialog (this fixme message also appeared with other applications). This corresponded to a (certainly somewhat minor) missing functionality in the code dealing with shell links (shortcuts).

As I progressed in the implementation of the fixme, I saw that our shell links code missed much more functionality (the details of which has minor importance for my discussion here; please report to the JIRA report CORE-12682 and the linked reports inside for more information) that I was interested in fixing, and therefore, I diverted myself to fixing shell links code during the past 2 weeks. This work resulted in two commits in revisions 73573 and 73576.

Last two weeks of January (until ~= 30)

I was then later reminded (in the public mailing lists) of the fact that the FOSDEM 2017 event, to which ReactOS will participate, was imminent. At that time, Colin Finck started to play with adding support for "USB IsoHybrid" functionality (CORE-12648) (that is, adding functionality in the ISO to be able to also dump it on an USB key, making the latter bootable on PCs (this also adds a pseudo-MBR on the first otherwise-zeroed-out sectors of the ISO); this differs from the usual method of preformatting the USB key, extracting the contents of the ISO in the USB key and installing a bootloader, which is the method done by tools like e.g. "Rufus"). As this touched parts of ReactOS that I'm really fond of (namely bootsectors and FreeLdr), I decided to help Colin with these matters, hoping also it could be nice to have this feature ready for the FOSDEM.

Colin basically imported the feature from the ISOBOOT bootsector from SysLinux into our bootsector, and imported the "isohybrid" tool that is used to patch the ISO. This was committed in revisions 73555 and 73594. We stumbled into some bugs, one of which was a bug inside the ISOBOOT sector from SysLinux itself (see the last comments in CORE-12648 for more details), and another one in the FreeLdr bootloader, which thought the boot drive was always a HDD if its first sector happens to contain a MBR with the 0xAA55 signature (CORE-12692) (which is actually wrong if the boot drive is a CD, but whose contents come from a USB IsoHybrid ISO whose 1st sector contains a dummy MBR). I was able to write a patch for it, committed in revision 73621.

FOSDEM 2017 (Saturday 4th - Sunday 5th January)

As no one else was able to go to the FOSDEM (Brussels, ULB) with Colin, I proposed myself to accompany him there. We met together the evening before the FOSDEM began. We shared our booth with the guys (Adrien Destugues, François Revol) from the Haiku-OS project (a free and open-source operating system compatible with the now discontinued BeOS). We were able to give the 200 ReactOS CDs Colin made before coming.

Colin presenting ReactOS to the public: Software running on ReactOS: Group photo and booths: Haiku on the left, ReactOS on the right: