Go to file
ilammy 44b04cafef wClipboard: disallow Windows reserved names
Another issue revealed during testing is that older Windows systems
cannot handle the reserved file names well. While Windows 8 and 10 are
fine (they silently abort the file transfer), using reserved names with
Windows 7 can flat out crash explorer.exe or result into weird error
messages like "fatal error: 0x00000000 ERROR_SUCCESS".

This is not required by MS-RDPECLIP specification, but we should try to
avoid this issue as not using reserved file names seems to be assumed
a common sense in Windows protocols.

The most convenient way to handle the issue would be on wClipboard level
so that WinPR's clients do not bother with it. We should prohibit the
reserved names from being used in FILEDESCRIPTOR, failing the conversion
if we see such a file.

POSIX subsystem (the only one at the moment) handles remote file names
in two places so move the Unicode conversion and the new validation
check into a separate function.

The reserved file name predicate is placed into <winpr/file.h> so that
it can be used in other places too. For example, other wClipboard local
file subsystems will need it. (It would be really nice to enforce this
check somewhere in the common code, so that the subsystems can't miss
it, but other places can miss some errors thus we're doing it here, as
early as possible.)

The predicate acts on separate file name components rather than full
file names because the backslash is a reserved character too. If we
process full file names this can result in phantom directory entry in
the remote file name. Not to say that handling ready-made components
spares us from splitting the full file name to extract them :)

The implementation is... a bit verbose, but that's fine by me. In the
absence of functions for case-insensitive wide string comparison and
the need to check for the [0-9] at the end of some file names this is
quite readable. Thanks to FAT and NTFS for being case-insensitive and
to MS-DOS for having reserved file names in the first place.
2017-04-09 03:17:07 +03:00
channels channels/cliprdr: handle cliprdr 2 GB size limit 2017-04-09 03:15:49 +03:00
ci/cmake-preloads Rewrite drive channel using WinPR functions 2017-03-13 14:18:46 -07:00
client x11/cliprdr: negotiate file streaming support 2017-04-09 03:15:49 +03:00
cmake wClipboard: local file subsystem boilerplate 2017-04-09 03:15:48 +03:00
docs Added android release build configurations. 2017-01-16 15:25:20 +01:00
external cmake: added external directory 2012-11-01 13:50:49 -04:00
include channels/cliprdr: fix CLIPRDR_FILECONTENTS_REQUEST 2017-04-09 03:15:49 +03:00
libfreerdp Fixed NEON YUV to RGB conversion issues. 2017-04-05 12:20:29 +02:00
packaging Fix nightly packages 2017-01-23 16:43:00 +01:00
rdtk Fixed argument checks, formatting. 2017-03-03 14:11:28 +01:00
resources Recompressed images with FileOptimizer 6.8 (an open-source mass file recompression tool for Windows) 2014-08-08 20:12:25 -04:00
scripts Update for android scripts, per arch includes. 2017-03-09 11:32:34 +01:00
server Scanbuild warning, argument checks and leak fixes. 2017-03-02 18:13:43 +01:00
third-party cleanup cmake exports and pkg-config files 2016-01-12 17:32:33 +01:00
uwac trivial issue found by cppcheck: 2017-01-25 15:48:49 +05:00
winpr wClipboard: disallow Windows reserved names 2017-04-09 03:17:07 +03:00
.gitignore Add an environment variables section to the man 2016-06-21 15:28:38 +02:00
buildflags.h.in add parameter buildconfig 2016-01-12 17:32:33 +01:00
ChangeLog changelog: update for 1.0.1 2012-02-09 21:01:42 -05:00
CMakeCPack.cmake Added pdb files to package target. 2015-12-15 12:07:21 +01:00
CMakeCPackOptions.cmake.in cmake: fix package generation on Mac OS X 2013-09-09 21:42:25 -04:00
CMakeLists.txt Fixed RPATH settings for OS X 2017-04-06 08:08:07 +02:00
config.h.in wClipboard: local file subsystem boilerplate 2017-04-09 03:15:48 +03:00
LICENSE FreeRDP 1.0: initial commit 2011-06-30 15:12:51 -04:00
README Updated links in README 2013-05-27 18:29:24 +02:00

FreeRDP: A Remote Desktop Protocol Implementation
=================================================

FreeRDP is a free implementation of the Remote Desktop Protocol (RDP), released under the Apache license.
Enjoy the freedom of using your software wherever you want, the way you want it, in a world where
interoperability can finally liberate your computing experience.

Resources
---------

Project website: http://www.freerdp.com/
Issue tracker: https://github.com/FreeRDP/FreeRDP/issues
Sources: https://github.com/FreeRDP/FreeRDP/
Wiki: https://github.com/FreeRDP/FreeRDP/wiki
Downloads and other resources: http://pub.freerdp.com
API doc: http://pub.freerdp.com/api/

IRC channel: #freerdp @ irc.freenode.net
Mailing list: https://lists.sourceforge.net/lists/listinfo/freerdp-devel

Microsoft Open Specifications
-----------------------------

Information regarding the Microsoft Open Specifications can be found at:
http://www.microsoft.com/openspecifications/

A list of reference documentation is maintained here:
https://github.com/FreeRDP/FreeRDP/wiki/Reference-Documentation

Compilation
-----------

Instructions on how to get started compiling FreeRDP can be found on the wiki:
https://github.com/FreeRDP/FreeRDP/wiki/Compilation