FreeRDP is a free remote desktop protocol library and clients

Overview

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: https://www.freerdp.com/
Issue tracker: https://github.com/FreeRDP/FreeRDP/issues
Sources: https://github.com/FreeRDP/FreeRDP/
Downloads: https://pub.freerdp.com/releases/
Wiki: https://github.com/FreeRDP/FreeRDP/wiki
API documentation: https://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

Issues
  • Long term test - Freerdp disconnects with fastpath error

    Long term test - Freerdp disconnects with fastpath error

    FreeRDP Master - Git Revision 24aa71e6cb547c02fbdf724258c3e3c0932ef0b9

    All cmake Options: sudo cmake -DCMAKE_INSTALL_PREFIX=/opt/freerdp -DWITH_JPEG=ON -DWITH_THIRD_PARTY=ON -DBUILTIN_CHANNELS=OFF -DWITH_CUPS=ON -DWITH_PULSE=ON -DWITH_PCSC=ON -DWITH_CHANNELS=ON -DCHANNEL_SERIAL=ON \ -DCHANNEL_SMARTCARD=ON -DWITH_CLIENT_INTERFACE=ON -DWITH_XINERAMA=ON -DWITH_XEXT=ON -DWITH_XV=ON -DWITH_XI=ON -DWITH_XRENDER=ON -DWITH_SSE2=ON -DCHANNEL_PRINTER=ON -DCHANNEL_PRINTER_CLIENT=ON
    -DCHANNEL_RDPDR=ON -DCHANNEL_DRIVE=ON -DCHANNEL_CLIPRDR=ON -DCHANNEL_URBDRC_CLIENT=ON -DCHANNEL_SMARTCARD_CLIENT=ON -DCHANNEL_URBDRC=ON -DWITH_WAYLAND=OFF -DWITH_FFMPEG=ON -DWITH_X11=ON
    -DWITH_OPENH264=ON -DWITH_GSM=ON -DWITH_GSTREAMER_0_10=ON

    Connection server -> Windows Server 2012 R2 Standard 64-Bit Client system -> Linux ubuntu-trusty-32 3.13.x

    Command Line: /usr/bin/xfreerdp /u:"$USER" /p:"$PASS" /v:"$SERVER" /d:"$DOMAIN" /gdi:hw /f /multimon /bpp:24 /kbd:0x0404 +async-input +async-update +sec-rdp +sec-tls -sec-nla /rfx +grab-keyboard /smartcard +compression /network:lan +clipboard /cert-ignore

    [12:02:57:719] [24952:24953] [WARN][com.freerdp.core.client] - Skipping, channel already loaded
    [12:02:57:754] [24952:24953] [ERROR][com.winpr.timezone] - Unable to find a match for unix timezone: Etc/UTC
    [19:31:42:196] [24952:24953] [ERROR][com.freerdp.core.fastpath] - FASTPATH_UPDATETYPE_SURFCMDS - update_recv_surfcmds() - -1
    [19:31:42:206] [24952:24953] [ERROR][com.freerdp.core.fastpath] - fastpath_recv_update_data: fastpath_recv_update() - -1
    [19:31:42:206] [24952:24953] [ERROR][com.freerdp.core.fastpath] - fastpath_recv_update_data() fail
    [19:31:42:206] [24952:24953] [ERROR][com.freerdp.core.transport] - transport_check_fds: transport->ReceiveCallback() - -1
    [19:31:42:206] [24952:24953] [ERROR][com.freerdp.core] - freerdp_check_fds() failed - 0
    [19:31:42:207] [24952:24953] [ERROR][com.freerdp.client.x11] - Failed to check FreeRDP file descriptor
    [19:31:42:212] [24952:25033] [WARN][com.freerdp.channels.smartcard.client] - IRP failure: SCardGetStatusChangeW (0x000900A4), status: SCARD_E_CANCELLED (0x80100002)
    [19:31:42:212] [24952:25035] [WARN][com.freerdp.channels.smartcard.client] - IRP failure: SCardGetStatusChangeW (0x000900A4), status: SCARD_E_CANCELLED (0x80100002)
    [19:31:42:212] [24952:24972] [ERROR][com.freerdp.channels.rdpdr.client] - VirtualChannelWrite failed with CHANNEL_RC_NOT_CONNECTED [00000004]
    [19:31:42:212] [24952:24972] [ERROR][com.freerdp.channels.smartcard.client] - smartcard_complete_irp failed with error 4!
    [19:31:42:215] [24952:24952] [ERROR][com.winpr.sync.mutex] - pthread_mutex_destroy failed with Device or resource busy [16]
    

    What I have done is very simple -> Connect to the server with a smartcard reader connected and a smartcard inserted (did not intent to use it) -> Start Chrome and play cat videos for hours on youtube. It was just a test to see if it crashes in a longterm test. (7h 30min as it seems). There seem to be some errors in here but I guess the main problem is the fastpath error. I did try to use +compression /compression-level:1 or /max-fast-path-size:99999 but neither of them worked.

    Edit 04.10.2016: Just tested with the current nightly build. Still not working.

    client server waiting-feedback 
    opened by T3N4K4 139
  • TS Gateway Support

    TS Gateway Support

    Add support of TS Gateway (http://technet.microsoft.com/en-us/library/cc731264(WS.10).aspx)

    opened by nosovk 128
  • Continuation on PCSC_SCardGetAttrib

    Continuation on PCSC_SCardGetAttrib

    Hi,

    I was following issue #6777 because it looked like there maybe could be a solution for my problem. I have tested everything again with the 2.0.0rc4 build, because the Snejpro succeeded with that one. I also tried the latest master of the nightly build and just now #6792 without any luck The program still says smartcard inserted; false.

    I've got the program here for you to test with. Maybe in that way you could assert why the program is not detecting the card? https://we.tl/t-yLKRTS0SZr

    I also created a new log with the #6792 version: log_freerdp(3).txt

    And the build config: buildconfignew

    here you can find the log (dll's) c:\temp\zorgidlog\

    channel-smartcard client fixed-waiting-test 
    opened by ShiZNizZLe 105
  • smartcard SCARD_E_UNKNOWN-error (W2012R2-server)

    smartcard SCARD_E_UNKNOWN-error (W2012R2-server)

    Within a freerdp session I get an SCARD_E_UNKNOWN error and smartcard is not usable in terminal session. On client side with pcsc_scan (as same user) all seems ok and smartcard is detected and read. The terminal server is W2012R2, client is Arch Linux with current versions of smartcard-drivers and tools installed:

    ccid 1.4.23-1
    opensc 0.16.0-1
    pcsc-perl 1.4.14-2
    pcsc-tools 1.4.26-1
    pcsclite 1.8.16-1
    

    $> xfreerdp /multimon /smartcard /f +aero +clipboard /v:192.168.1.10 /u:stefanie /d:KK
    [17:34:58:011] [2230:2231] [INFO][com.freerdp.client.common.cmdline] - loading channel rdpdr
    [17:34:58:011] [2230:2231] [INFO][com.freerdp.client.common.cmdline] - loading channel rdpsnd
    [17:34:58:011] [2230:2231] [INFO][com.freerdp.client.common.cmdline] - loading channel cliprdr
    Password: 
    [17:35:02:293] [2230:2231] [WARN][com.freerdp.client.x11] - XInput extension not available.
    [17:35:03:339] [2230:2231] [ERROR][com.freerdp.client.x11] - Error loading X Fixes extension
    [17:35:03:366] [2230:2235] [INFO][com.freerdp.channels.rdpdr.client] - Loading device service smartcard (static)
    [17:35:03:508] [2230:2235] [INFO][com.freerdp.channels.rdpdr.client] - registered device #1: SCARD (type=32 id=1)
    [17:35:03:914] [2230:2235] [INFO][com.freerdp.channels.rdpdr.client] - registered device #1: SCARD (type=32 id=1)
    [17:35:03:931] [2230:2235] [INFO][com.freerdp.channels.rdpdr.client] - registered device #1: SCARD (type=32 id=1)
    [17:35:04:418] [2230:2267] [WARN][com.freerdp.channels.smartcard.client] - IRP failure: SCardGetStatusChangeA (0x000900A0), status: SCARD_E_UNKNOWN (0xC0000017)
    [17:35:04:418] [2230:2267] [WARN][com.freerdp.channels.smartcard.client] - IRP failure: SCardGetStatusChangeA (0x000900A0), ntstatus: 0xC0000017
    [17:35:11:604] [2230:2231] [INFO][com.freerdp.core] - ERRINFO_RPC_INITIATED_DISCONNECT_BY_USER (0x0000000B):The disconnection was initiated by an administrative tool on the server running in the user's session.
    [17:35:11:742] [2230:2230] [ERROR][com.winpr.sync.mutex] - pthread_mutex_destroy failed with Das Gerät oder die Ressource ist belegt [16]
    $> 
    

    Also if the specific smartcard is defined (as below) the same error happens.

    /smartcard:"KOBIL Systems Smart Token (NE155019978) 00 00"
    

    pcsc_scan output:

    $> pcsc_scan 
    PC/SC device scanner
    V 1.4.26 (c) 2001-2011, Ludovic Rousseau <ludovic.roussea[email protected]>
    Compiled with PC/SC lite version: 1.8.16
    Using reader plug'n play mechanism
    Scanning present readers...
    0: KOBIL Systems Smart Token (NE155019978) 00 00
    
    Sat Jul  2 17:35:36 2016
    Reader 0: KOBIL Systems Smart Token (NE155019978) 00 00
      Card state: Card inserted, 
      ATR: 3B BF 96 00 81 31 FE 5D 00 64 04 11 04 0F 31 C0 73 F7 01 D0 00 90 00 74
    
    ATR: 3B BF 96 00 81 31 FE 5D 00 64 04 11 04 0F 31 C0 73 F7 01 D0 00 90 00 74
    + TS = 3B --> Direct Convention
    + T0 = BF, Y(1): 1011, K: 15 (historical bytes)
      TA(1) = 96 --> Fi=512, Di=32, 16 cycles/ETU
    250000 bits/s at 4 MHz, fMax for Fi = 5 MHz => 312500 bits/s
      TB(1) = 00 --> VPP is not electrically connected
      TD(1) = 81 --> Y(i+1) = 1000, Protocol T = 1 
    

    Is this a pure client-side issue or means SCARD_E_UNKNOWN that the smartcard was rejected by the server? Is there a possibility to debug this issue more in-depth?

    Thanks and regards Nazdravi

    opened by Nazdravi 105
  • USB redirection has issues with `bulk_or_interrupt_transfer`

    USB redirection has issues with `bulk_or_interrupt_transfer`

    Reported via IRC from @Raven24 for a HID device (Olympus Dictation footpedal)

    Log: https://pastebin.com/JMpfAkcP Some debugging done: https://pastebin.com/GHrnmqzx

    Problem seems to be that the TS_URB_BULK_OR_INTERRUPT_TRANSFER returns invalid data.

    channel:usb client 
    opened by akallabeth 104
  • Smart Card Complete Overhaul

    Smart Card Complete Overhaul

    This is the pull request you've all been waiting for: a complete overhaul of smart card support in FreeRDP, and yes, it's getting pretty good.

    Here's a (quite summarized) list of things I did:

    • Add new libwinpr-smartcard module which exposes a proper WinSCard implementation and wraps under the hood either the original WinSCard API on Windows or pcsc-lite on non-Windows.
    • Removed (yes, removed!) the link-time dependency on pcsc-lite. libwinpr-smartcard simply loads libpcsclite.so dynamically on Linux, the PCSC framework library on OS X, and winscard.dll on Windows.
    • Implemented many of the WinSCard APIs which are not implemented by pcsc-lite, especially all the unicode functions.
    • New heavily hardened NDR encoding and decoding functions have been written for all the RDP smartcard data structures. For some reason Microsoft thought it was a great idea to use NDR for those, which is the same nightmare involved in MSRPC for TS Gateway.
    • Added tons of strict checks and debug warnings on the first unexpected byte in those NDR data structures so we can very quickly see when it goes wrong and what goes wrong.
    • Refactored all smartcard code to use proper definitions and WinSCard API from libwinpr-smartcard, which means no more custom definitions and #ifdef WITH_PCSC everywhere.
    • Restructured smartcard channel code to use more common functions and strict error checking.
    • Implemented proper unicode and ascii equivalents of smartcard channel calls along with equivalent WinSCard APIs.

    For testing, I have been using the Athena Starter Kit, which comes with an Athena V3C USB reader and an IDProtect Key. The code is exactly the same on Windows, Linux and Mac OS X. I confirm it works fine with more than one readers connected at the same time. mythos and ntwerdochlib on IRC have also been testing as I have been working on this with positive results so far.

    While I did port the code to Mac OS X, I may need some help with testing as there is apparently a problem with driver support and mavericks for my Athena smartcard readers.

    opened by awakecoding 95
  • Add client kerberos support

    Add client kerberos support

    This PR give users the possibility to authenticate, with login and password, via MIT/Heimdal Kerberos rather than NTLM. If Kerberos credentials can't be acquired we fall back on NTLM.

    Note also that currently, the server side for Kerberos have not been implemented yet. Work to do.

    opened by dodo040 74
  • FreeRDP disconnects in the middle of session on Server 2008 R2 only when using gateway

    FreeRDP disconnects in the middle of session on Server 2008 R2 only when using gateway

    I have found that xfreerdp crashes in the middle of my session (more quickly when it is inactive even for less than the Windows session timeout, less quickly when I'm actively using it, and seemingly not at all when it's minimized) when I connect to a 2008 R2 server ONLY via a gateway. The version I have is a recent pull, 2.0.0-dev4 (b216520d5) but I have seen this with a few previous versions as well. When I don't use the gateway, it does not crash. Windows clients connecting through the gateway don't have this issue.

    My command to connect is: xfreerdp /v:myserver /cert-ignore /f /d:'mydomain' /g:'mygateway'

    Log of connect and disconnect is attached. freerdpcrash3.txt

    gateway waiting-feedback 
    opened by uhtechteam 71
  • Resource management redesign

    Resource management redesign

    portion of changes to make libfreerdp and channels addins more friendly to external resource management (external thread pools, event libraries)

    this changes introducing DisableThreads option in rdpSetting structure.

    currently this setting turning off threads in rfx and yuv codecs.

    also implemented DisableThreads option support for cliprdr channel addin for client (currently used in our project) which demonstrates how to use this new option.

    opened by sss123next 67
  • Unable to redirect sound to local machine

    Unable to redirect sound to local machine

    I am user git master compiled on tiny core I am unable to redirect audio from the RDP server to the local client machine

    Either command: xfreerdp /u:XXX /p:XXX /d:XX /cert-ignore / sec:rdp /f /sound:sys:alsa /multimon /v:XXXX xfreerdp /u:XXX /p:XXX /d:XX /cert-ignore / sec:rdp /f /sound /multimon /v:XXXX

    Generates this error when I try to play a sound requested sound buffer size 4400, for 1881 instead

    And when I try to disconnect from the RDP session, the RDP session hangs

    If I run xfreerdp without the /sound option I can disconnect from the RDP session but obviously no sound is redirected.

    Similar to this which doesn't have a solution https://github.com/FreeRDP/FreeRDP/issues/1365

    (and discussed in this thread http://sourceforge.net/mailarchive/forum.php?thread_name=zarafa.514b23b8.733a.478c2c4f78973d39%40srvgr1.ubrichter.de&forum_name=freerdp-devel )

    I tried using a different version of rdpsnd_alsa.c as suggested in the above but just received different errors

    opened by parmsd 65
  • Test speedup

    Test speedup

    Improves runtime speed of unit tests:

    1. Set shorter timeouts
    2. Reduce dataset sizes
    opened by akallabeth 4
  • Various warnings reported on the mingw CI that look pertinent

    Various warnings reported on the mingw CI that look pertinent

    C:/_/mingw-w64-freerdp/src/freerdp-2.3.2/winpr/libwinpr/wtsapi/wtsapi_win32.c:63:13: warning: 'g_Initialized' defined but not used [-Wunused-variable]
         63 | static BOOL g_Initialized = FALSE;
            |             ^~~~~~~~~~~~~
    

    True, this is never used in any build

    [222/507] Building C object libfreerdp/CMakeFiles/freerdp.dir/core/license.c.obj
      C:/_/mingw-w64-freerdp/src/freerdp-2.3.2/libfreerdp/core/license.c: In function 'saveCal':
      C:/_/mingw-w64-freerdp/src/freerdp-2.3.2/libfreerdp/core/license.c:244:14: warning: passing argument 1 of 'DeleteFileW' from incompatible pointer type [-Wincompatible-pointer-types]
        244 |   DeleteFile(filepathNew);
            |              ^~~~~~~~~~~
            |              |
            |              char *
      In file included from D:/a/_temp/msys/msys64/mingw64/x86_64-w64-mingw32/include/winbase.h:18,
                       from D:/a/_temp/msys/msys64/mingw64/x86_64-w64-mingw32/include/windows.h:70,
                       from D:/a/_temp/msys/msys64/mingw64/x86_64-w64-mingw32/include/winsock2.h:23,
                       from C:/_/mingw-w64-freerdp/src/freerdp-2.3.2/winpr/include/winpr/windows.h:31,
                       from winpr/include/winpr/wtypes.h:36,
                       from C:/_/mingw-w64-freerdp/src/freerdp-2.3.2/winpr/include/winpr/platform.h:25,
                       from C:/_/mingw-w64-freerdp/src/freerdp-2.3.2/winpr/include/winpr/winpr.h:22,
                       from C:/_/mingw-w64-freerdp/src/freerdp-2.3.2/winpr/include/winpr/crt.h:27,
                       from C:/_/mingw-w64-freerdp/src/freerdp-2.3.2/libfreerdp/core/license.c:26:
      D:/a/_temp/msys/msys64/mingw64/x86_64-w64-mingw32/include/fileapi.h:166:50: note: expected 'LPCWSTR' {aka 'const short unsigned int *'} but argument is of type 'char *'
        166 |   WINBASEAPI WINBOOL WINAPI DeleteFileW (LPCWSTR lpFileName);
            |                                          ~~~~~~~~^~~~~~~~~~
      C:/_/mingw-w64-freerdp/src/freerdp-2.3.2/libfreerdp/core/license.c:248:19: warning: passing argument 1 of 'MoveFileExW' from incompatible pointer type [-Wincompatible-pointer-types]
        248 |  ret = MoveFileEx(filepathNew, filepath, MOVEFILE_REPLACE_EXISTING);
            |                   ^~~~~~~~~~~
            |                   |
            |                   char *
      In file included from D:/a/_temp/msys/msys64/mingw64/x86_64-w64-mingw32/include/windows.h:70,
                       from D:/a/_temp/msys/msys64/mingw64/x86_64-w64-mingw32/include/winsock2.h:23,
                       from C:/_/mingw-w64-freerdp/src/freerdp-2.3.2/winpr/include/winpr/windows.h:31,
                       from winpr/include/winpr/wtypes.h:36,
                       from C:/_/mingw-w64-freerdp/src/freerdp-2.3.2/winpr/include/winpr/platform.h:25,
                       from C:/_/mingw-w64-freerdp/src/freerdp-2.3.2/winpr/include/winpr/winpr.h:22,
                       from C:/_/mingw-w64-freerdp/src/freerdp-2.3.2/winpr/include/winpr/crt.h:27,
                       from C:/_/mingw-w64-freerdp/src/freerdp-2.3.2/libfreerdp/core/license.c:26:
      D:/a/_temp/msys/msys64/mingw64/x86_64-w64-mingw32/include/winbase.h:2306:50: note: expected 'LPCWSTR' {aka 'const short unsigned int *'} but argument is of type 'char *'
       2306 |   WINBASEAPI WINBOOL WINAPI MoveFileExW (LPCWSTR lpExistingFileName, LPCWSTR lpNewFileName, DWORD dwFlags);
            |                                          ~~~~~~~~^~~~~~~~~~~~~~~~~~
      C:/_/mingw-w64-freerdp/src/freerdp-2.3.2/libfreerdp/core/license.c:248:32: warning: passing argument 2 of 'MoveFileExW' from incompatible pointer type [-Wincompatible-pointer-types]
        248 |  ret = MoveFileEx(filepathNew, filepath, MOVEFILE_REPLACE_EXISTING);
            |                                ^~~~~~~~
            |                                |
            |                                char *
      In file included from D:/a/_temp/msys/msys64/mingw64/x86_64-w64-mingw32/include/windows.h:70,
                       from D:/a/_temp/msys/msys64/mingw64/x86_64-w64-mingw32/include/winsock2.h:23,
                       from C:/_/mingw-w64-freerdp/src/freerdp-2.3.2/winpr/include/winpr/windows.h:31,
                       from winpr/include/winpr/wtypes.h:36,
                       from C:/_/mingw-w64-freerdp/src/freerdp-2.3.2/winpr/include/winpr/platform.h:25,
                       from C:/_/mingw-w64-freerdp/src/freerdp-2.3.2/winpr/include/winpr/winpr.h:22,
                       from C:/_/mingw-w64-freerdp/src/freerdp-2.3.2/winpr/include/winpr/crt.h:27,
                       from C:/_/mingw-w64-freerdp/src/freerdp-2.3.2/libfreerdp/core/license.c:26:
      D:/a/_temp/msys/msys64/mingw64/x86_64-w64-mingw32/include/winbase.h:2306:78: note: expected 'LPCWSTR' {aka 'const short unsigned int *'} but argument is of type 'char *'
       2306 |   WINBASEAPI WINBOOL WINAPI MoveFileExW (LPCWSTR lpExistingFileName, LPCWSTR lpNewFileName, DWORD dwFlags);
            |                                                                      ~~~~~~~~^~~~~~~~~~~~~
    

    Looks like it's related to UNICODE definition

      [274/507] Building C object libfreerdp/CMakeFiles/freerdp.dir/codec/progressive.c.obj
      C:/_/mingw-w64-freerdp/src/freerdp-2.3.2/libfreerdp/codec/progressive.c: In function 'progressive_decompress_ex':
      C:/_/mingw-w64-freerdp/src/freerdp-2.3.2/libfreerdp/codec/progressive.c:2169:12: warning: unused variable 'j' [-Wunused-variable]
       2169 |  UINT32 i, j;
            |            ^
      C:/_/mingw-w64-freerdp/src/freerdp-2.3.2/libfreerdp/codec/progressive.c: In function 'progressive_compress_ex':
      C:/_/mingw-w64-freerdp/src/freerdp-2.3.2/libfreerdp/codec/progressive.c:2542:21: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
       2542 |   RECTANGLE_16* r = region16_rects(invalidRegion, NULL);
            |                     ^~~~~~~~~~~~~~
    

    These ones may be present on all platforms

      [396/507] Building C object channels/drive/client/CMakeFiles/drive-client.dir/drive_file.c.obj
      C:/_/mingw-w64-freerdp/src/freerdp-2.3.2/channels/drive/client/drive_file.c: In function 'drive_file_init':
      C:/_/mingw-w64-freerdp/src/freerdp-2.3.2/channels/drive/client/drive_file.c:319:11: warning: unused variable 'size' [-Wunused-variable]
        319 |    size_t size =
            |           ^~~~
      C:/_/mingw-w64-freerdp/src/freerdp-2.3.2/channels/drive/client/drive_file.c: In function 'drive_file_read':
      C:/_/mingw-w64-freerdp/src/freerdp-2.3.2/channels/drive/client/drive_file.c:436:51: warning: passing argument 4 of 'ReadFile' from incompatible pointer type [-Wincompatible-pointer-types]
        436 |  if (ReadFile(file->file_handle, buffer, *Length, &read, NULL))
            |                                                   ^~~~~
            |                                                   |
            |                                                   UINT32 * {aka unsigned int *}
      In file included from D:/a/_temp/msys/msys64/mingw64/x86_64-w64-mingw32/include/winbase.h:18,
                       from D:/a/_temp/msys/msys64/mingw64/x86_64-w64-mingw32/include/windows.h:70,
                       from D:/a/_temp/msys/msys64/mingw64/x86_64-w64-mingw32/include/winsock2.h:23,
                       from C:/_/mingw-w64-freerdp/src/freerdp-2.3.2/winpr/include/winpr/windows.h:31,
                       from winpr/include/winpr/wtypes.h:36,
                       from C:/_/mingw-w64-freerdp/src/freerdp-2.3.2/channels/drive/client/drive_file.c:38:
      D:/a/_temp/msys/msys64/mingw64/x86_64-w64-mingw32/include/fileapi.h:178:106: note: expected 'LPDWORD' {aka 'long unsigned int *'} but argument is of type 'UINT32 *' {aka 'unsigned int *'}
        178 |   WINBASEAPI WINBOOL WINAPI ReadFile (HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped);
            |                                                                                                  ~~~~~~~~^~~~~~~~~~~~~~~~~~~
      C:/_/mingw-w64-freerdp/src/freerdp-2.3.2/channels/drive/client/drive_file.c: In function 'drive_file_write':
      C:/_/mingw-w64-freerdp/src/freerdp-2.3.2/channels/drive/client/drive_file.c:456:53: warning: passing argument 4 of 'WriteFile' from incompatible pointer type [-Wincompatible-pointer-types]
        456 |   if (!WriteFile(file->file_handle, buffer, Length, &written, NULL))
            |                                                     ^~~~~~~~
            |                                                     |
            |                                                     UINT32 * {aka unsigned int *}
      In file included from D:/a/_temp/msys/msys64/mingw64/x86_64-w64-mingw32/include/winbase.h:18,
                       from D:/a/_temp/msys/msys64/mingw64/x86_64-w64-mingw32/include/windows.h:70,
                       from D:/a/_temp/msys/msys64/mingw64/x86_64-w64-mingw32/include/winsock2.h:23,
                       from C:/_/mingw-w64-freerdp/src/freerdp-2.3.2/winpr/include/winpr/windows.h:31,
                       from winpr/include/winpr/wtypes.h:36,
                       from C:/_/mingw-w64-freerdp/src/freerdp-2.3.2/channels/drive/client/drive_file.c:38:
      D:/a/_temp/msys/msys64/mingw64/x86_64-w64-mingw32/include/fileapi.h:186:109: note: expected 'LPDWORD' {aka 'long unsigned int *'} but argument is of type 'UINT32 *' {aka 'unsigned int *'}
        186 |   WINBASEAPI WINBOOL WINAPI WriteFile (HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped);
            |                                                                                                     ~~~~~~~~^~~~~~~~~~~~~~~~~~~~
    

    mix of DWORD̀ and UINT32.

    opened by hardening 1
  • Fix JNI_OnLoad duplicate definition for Android

    Fix JNI_OnLoad duplicate definition for Android

    libwinpr/timezone/timezone.c defines JNI_OnLoad() in order to get a JavaVM* handle on Android. This function can only be defined once per shared library, and it is also defined in the Android FreeRDP library, breaking the build against a static WinPR library.

    In order to support both static and shared libraries, I have added a function to register the JavaVM* handle in WinPR such that it can be accessed from the function that requires it, but without using JNI_OnLoad(). The single JNI_OnLoad function in the Android library now calls winpr_set_java_vm to register the handle, and the conflict is now resolved.

    opened by awakecoding 1
  • Remove strnlen(INT_MAX) trick to fix Android x86/ARM emulation

    Remove strnlen(INT_MAX) trick to fix Android x86/ARM emulation

    This pull request removes the odd strnlen(INT_MAX) weird trick that unfortunately doesn't play well with some Android x86 devices doing ARM emulation, or Android ARM64 devices emulating ARM binaries. I suspect it is caused by the usage of limit values and the way the emulation is done, and rather than tell a few customers to "buy another Android device", I'd rather get it fixed here.

    I understand the intent, but I'm not sure this trick is really any safer than a plain strlen anyway, and it is definitely causing me to have to patch my builds just for this. Are there other techniques that don't involve using the upper bound of INT_MAX in strnlen? If we really have to check for this one, I suspect there are a lot of other places we'd rather check for safety in FreeRDP.

    opened by awakecoding 10
  • Add WINPR_ONLY build option to build WinPR separately from FreeRDP

    Add WINPR_ONLY build option to build WinPR separately from FreeRDP

    This pull request includes various cmake build system changes along with internal refactoring of OpenSSL/mbedTLS function structures to allow building WinPR against mbedTLS separately from FreeRDP (still using OpenSSL). While OpenSSL is still required for FreeRDP, we have been using WinPR mbedTLS builds for years on our side for multiple projects other than FreeRDP, and our FreeRDP builds are linked against the same prebuilt WinPR library that links against mbedTLS.

    I've been very cautious with these changes, they should have no impact on the existing build options. Another option that was added is WITH_WINPR_TOOLS to turn off the WinPR tools like such as makecert that were never ported to mbedTLS.

    opened by awakecoding 12
  • Fix Windows Unicode handling of environment variables

    Fix Windows Unicode handling of environment variables

    This pull request fixes Unicode handling of environment variables on Windows, which can unfortunately lead to problems when using environment variables values containing non-ASCII characters. The wrapper does the required UTF-8 to UTF-16 conversion automatically on Windows so the rest of the code can stick to UTF-8. We initially discovered the problem when using environment variables with values containing a path with a few international characters, such as the user home. This is related to https://github.com/FreeRDP/FreeRDP/pull/7038

    opened by awakecoding 10
  • card reader is detected only in the first remoteapp of the session

    card reader is detected only in the first remoteapp of the session

    Describe the bug When use smartcard reader on two internet explorer, the first time is read correctly, in the second web application not.

    To test: First open internet explorer with remoteapp command line, the second application can be opened within the same session with CTRL+N hotkey.

    Method g_PCSC.pfnSCardListReaders(hContext, mszGroups, NULL, &pcsc_cchReaders); returns that the pcsc_cchReaders value is 0 and status is SCARD_F_COMM_ERROR

    Does it seem like it is not detecting the reader because the first remote application in the session has it blocked?

    Freerdp in desktop mode it works correctly and the windows client (mstsc) works both seamless and in desktop mode

    Application details

    This is FreeRDP version 3.0.0-dev (d31a98336)

    /u:test /app:"||iexplore" /app-cmd:"https://google.es" /title:"Test" /d:test.test /smartcard /p:"test" /v:localhost:3389 /size:100% /log-level:TRACE /cert-ignore

    Output of xfreerdp /buildconfig This is FreeRDP version 3.0.0-dev (d31a98336) Build configuration: BUILD_TESTING=OFF BUILTIN_CHANNELS=ON HAVE_AIO_H=1 HAVE_EXECINFO_H=1 HAVE_FCNTL_H=1 HAVE_INTTYPES_H=1 HAVE_MATH_C99_LONG_DOUBLE=1 HAVE_POLL_H=1 HAVE_PTHREAD_MUTEX_TIMEDLOCK=ON HAVE_PTHREAD_MUTEX_TIMEDLOCK_LIB=1 HAVE_PTHREAD_MUTEX_TIMEDLOCK_SYMBOL= HAVE_SYSLOG_H=1 HAVE_SYS_EVENTFD_H=1 HAVE_SYS_FILIO_H= HAVE_SYS_MODEM_H= HAVE_SYS_SELECT_H=1 HAVE_SYS_SOCKIO_H= HAVE_SYS_STRTIO_H= HAVE_SYS_TIMERFD_H=1 HAVE_TM_GMTOFF=1 HAVE_UNISTD_H=1 HAVE_XI_TOUCH_CLASS=1 WITH_ALSA=OFF WITH_CAIRO=OFF WITH_CCACHE=ON WITH_CHANNELS=ON WITH_CLANG_FORMAT=ON WITH_CLIENT=ON WITH_CLIENT_AVAILABLE=1 WITH_CLIENT_CHANNELS=ON WITH_CLIENT_CHANNELS_AVAILABLE=1 WITH_CLIENT_COMMON=ON WITH_CLIENT_INTERFACE=OFF WITH_CUPS=OFF WITH_DEBUG_ALL=OFF WITH_DEBUG_CAPABILITIES=OFF WITH_DEBUG_CERTIFICATE=OFF WITH_DEBUG_CHANNELS=OFF WITH_DEBUG_CLIPRDR=OFF WITH_DEBUG_DVC=OFF WITH_DEBUG_KBD=OFF WITH_DEBUG_LICENSE=OFF WITH_DEBUG_MUTEX=OFF WITH_DEBUG_NEGO=OFF WITH_DEBUG_NLA=OFF WITH_DEBUG_NTLM=OFF WITH_DEBUG_RAIL=OFF WITH_DEBUG_RDP=OFF WITH_DEBUG_RDPDR=OFF WITH_DEBUG_RDPEI=OFF WITH_DEBUG_RDPGFX=OFF WITH_DEBUG_REDIR=OFF WITH_DEBUG_RFX=OFF WITH_DEBUG_RINGBUFFER=OFF WITH_DEBUG_SCARD=OFF WITH_DEBUG_SND=OFF WITH_DEBUG_SVC=OFF WITH_DEBUG_SYMBOLS=OFF WITH_DEBUG_THREADS=OFF WITH_DEBUG_TIMEZONE=OFF WITH_DEBUG_TRANSPORT=OFF WITH_DEBUG_TSG=OFF WITH_DEBUG_TSMF=OFF WITH_DEBUG_TSMF=OFF WITH_DEBUG_TSMF_AVAILABLE=0 WITH_DEBUG_WND=OFF WITH_DEBUG_X11=OFF WITH_DEBUG_X11_CLIPRDR=OFF WITH_DEBUG_X11_LOCAL_MOVESIZE=OFF WITH_DEBUG_XV=OFF WITH_DSP_EXPERIMENTAL=OFF WITH_DSP_FFMPEG=OFF WITH_EVENTFD_READ_WRITE=1 WITH_FAAC=OFF WITH_FAAD2=OFF WITH_FFMPEG=TRUE WITH_FFMPEG=TRUE WITH_GFX_H264=ON WITH_GPROF=OFF WITH_GSM=OFF WITH_GSSAPI=OFF WITH_ICU=OFF WITH_IPP=OFF WITH_JPEG=OFF WITH_LAME=OFF WITH_LIBRARY_VERSIONING=ON WITH_LIBSYSTEMD=OFF WITH_MACAUDIO=OFF WITH_MACAUDIO=OFF WITH_MACAUDIO_AVAILABLE=0 WITH_MANPAGES=ON WITH_MBEDTLS=OFF WITH_OPENCL=OFF WITH_OPENH264=OFF WITH_OPENSLES=OFF WITH_OPENSSL=ON WITH_OSS=ON WITH_PCSC=ON WITH_PROFILER=OFF WITH_PULSE=OFF WITH_SAMPLE=OFF WITH_SANITIZE_ADDRESS=OFF WITH_SANITIZE_ADDRESS_AVAILABLE=1 WITH_SANITIZE_MEMORY=OFF WITH_SANITIZE_MEMORY_AVAILABLE=1 WITH_SANITIZE_THREAD=OFF WITH_SANITIZE_THREAD_AVAILABLE=1 WITH_SERVER=OFF WITH_SERVER_INTERFACE=ON WITH_SMARTCARD_INSPECT=OFF WITH_SOXR=OFF WITH_SSE2=ON WITH_SWSCALE=OFF WITH_THIRD_PARTY=OFF WITH_VAAPI=OFF WITH_VALGRIND_MEMCHECK=OFF WITH_VALGRIND_MEMCHECK_AVAILABLE=1 WITH_WAYLAND=ON WITH_WINPR_TOOLS=ON WITH_X11=ON WITH_X264=OFF WITH_XCURSOR=ON WITH_XEXT=ON WITH_XFIXES=ON WITH_XI=ON WITH_XINERAMA=ON WITH_XKBFILE=ON WITH_XRANDR=ON WITH_XRENDER=ON WITH_XSHM=ON WITH_XV=OFF WITH_ZLIB=ON Build type: Debug CFLAGS: -fPIC -Wall -Wno-unused-result -Wno-unused-but-set-variable -Wno-deprecated-declarations -fvisibility=hidden -Wimplicit-function-declaration -Wredundant-decls -g -DWINPR_DLL Compiler: GNU, 8.3.0 Target architecture: x64

    OS version connecting to (server side) Windows Server 2008 R2

    Environment (please complete the following information):

    OS: Debian Version/Distribution: 10 with XFCE Architecture: amd64

    waiting-feedback 
    opened by FutureKidBuu 20
  • usb request failed with 0000054f - usb webcam problem

    usb request failed with 0000054f - usb webcam problem

    Dear all,

    We are trying to set up the USB webcam to an XfreeRDP on Linux with XFCE terminal emulator 0.8.9.1.

    The webcam test on chromium browser works perfectly, but the problem is when we try to connect to it via usb with the sudo xfreerdp.

    The error message displayed is "usb request failed with 0000054f"

    The device is recognized and set up correctly.

    Also, we alredy adjusted the gpo to allow incoming video:​https://stackoverflow.com/questions/33719489/how-to-enable-usb-redirection-in-windows-10/46628854

    Any ideas on how to resolve this problem?

    os: xubunto 20.04 freerdp version 2.2.0 string: ~$ sudo xfreerdp /v:20.52.176.2 /usb:id,dev:046d:0836 /sound /microphone

    waiting-feedback 
    opened by afroben0306 3
  • Build for freerdp server(freerdp-shadow-cli), but clipboard and sound not effective

    Build for freerdp server(freerdp-shadow-cli), but clipboard and sound not effective

    I build for freerdp server(freerdp-shadow-cli) ,use these parameters: cmake -DWITH_SERVER=ON -DMONOLITHIC_BUILD=ON -DCMAKE_BUILD_TYPE=Debug -DWITH_SSE2=ON -DWITH_CUPS=on -DWITH_WAYLAND=off -DWITH_PULSE=on -DWITH_DEBUG_CLIPRDR=ON -DWITH_DEBUG_X11_CLIPRDR=ON -DWITH_CHANNEL_CLIPRDR_SERVER=ON -DWITH_CHANNEL_AUDIN_SERVER=ON -DCMAKE_INSTALL_PREFIX:PATH=/opt/freerdp ..

    And then,I use this command to start freerdp server: ./freerdp-shadow-cli -sec-nla I make sure that it‘s starting and used 3389 port

    Finally,I want to use xfreerdp to connect server at other machine. I use this command to connect: ./xfreerdp /v:172.17.30.177 /u:user1 /p:x1234567 /sound +clipboard But when I connect to server , the clipboard is not effective , sound is also effective I already see logs ,but there are no errors in logs.

    So I want to ask you for advice , thank you very much.

    waiting-feedback 
    opened by a10155212722 6
  • Hash table opaque

    Hash table opaque

    • Refactored HashTable API to be opaque
    • Fixed ArrayList_Add to conform to other function return types
    opened by akallabeth 20
Releases(2.3.2)
Mirror of https://gitlab.com/Remmina/Remmina The GTK+ Remmina Remote Desktop Client

Remmina remote desktop client Use other desktops remotely, from a tiny screen or large monitors. RDP, VNC, SPICE, NX, XDMCP, SSH and EXEC network prot

null 1.6k Jun 5, 2021
Popcorn Time is a multi-platform, free software BitTorrent client that includes an integrated media player ( Windows / Mac / Linux ) A Butter-Project Fork

Popcorn Time A multi-platform, free software BitTorrent client that includes an integrated media player. Visit the project's website at popcorntime.ap

Popcorn Software 6k Jun 4, 2021
Multi-platform app that allows your devices to communicate

KDE Connect - desktop app KDE Connect is a multi-platform app that allows your devices to communicate (eg: your phone and your computer). (Some) Featu

KDE GitHub Mirror 1.1k Jun 7, 2021
[WIP] Ulterius™ server where all the magic happens :rocket: :feelsgood:

Ulterius: Easy Remote Management Interested in sublicensing? Want to use our code in your stack or rebrand it for internal use? Reach out to us at and

Ulterius™ 597 Jun 3, 2021
Open source back-end server for web, mobile and IoT. The backend for busy developers. (self-hosted or hosted)

A scalable, multitenant backend for the cloud. Para is a scalable, multitenant backend server/framework for object persistence and retrieval. It helps

Erudika 395 May 26, 2021
A beautiful and customizable wallpapers manager for Linux

Komorebi - Animated Wallpapers for Linux (n) sunlight filtering through trees. Watch demo What is Komorebi? Komorebi is an awesome animated wallpapers

null 2.2k Jun 5, 2021
Personal CRM. Remember everything about your friends, family and business relationships.

Personal Relationship Manager Monica is a great open source personal relationship management system. Introduction Purpose Features Who is it for? What

Monica 12.9k Jun 6, 2021
Display and control your Android device

scrcpy (v1.17) Read in another language This application provides display and control of Android devices connected on USB (or over TCP/IP). It does no

Genymobile 49.4k Jun 4, 2021
Source code for Gramps Genealogical program

The Gramps Project ( https://gramps-project.org ) We strive to produce a genealogy program that is both intuitive for hobbyists and feature-complete f

Gramps Project 1.2k Jun 5, 2021
A black hole for Internet advertisements

Network-wide ad blocking via your own Linux hardware The Pi-hole® is a DNS sinkhole that protects your devices from unwanted content, without installi

Pi-hole 31.4k Jun 5, 2021
Open source API management platform

About Fusio is an open source API management platform which helps to build and manage REST APIs. Fusio provides all tools to quickly build an API from

Apioo 970 Jun 5, 2021
Make any web page a desktop application

Nativefier You want to make a native wrapper for WhatsApp Web (or any web page). nativefier 'web.whatsapp.com' You're done. Introduction Nativefier is

null 27.2k Jun 4, 2021
GeneWeb is an open source genealogy software with a web interface created by Daniel de Rauglaudre.

GeneWeb GeneWeb is an open source genealogy software written in OCaml. It comes with a Web interface and can be used off-line or as a Web service. Doc

GeneWeb 177 Jun 4, 2021