* client/X11/xf_client.c (xf_pre_connect): Set the field `colormap' of
`struct xfContext' to the default colormap.
* client/X11/xfreerdp.h (xf_gdi_get_color): Declare new external function.
* client/X11/xf_gdi.c (xf_gdi_get_color): Define new external function.
Use xf_gdi_get_color() to get the appropriate X color index from the GDI
color representation.
* client/X11/xf_graphics.c: Likewise.
drive_file_init: only allow directories and regular files
This is fixes issue #2071
Even if the server is only interested in getting a file's or directory's
attributes FreeRDP still tries to open the object with read permissions.
If the FreeRDP client has no read permissions for this object the call will
fail which forces the server to perform some expensive workarounds (e.g.
getting to the stat buffers via a directory enumeration request).
On Linux we can try to open the file or directory with the O_PATH flag in
order to obtain a file descriptor who's only purpose is to perform operations
that act purely at the file descriptor level.
Fixes clang compiler warning:
"warning: the value of the size argument in 'strncat' is too large,
might lead to a buffer overflow [-Wstrncat-size]"
strncat requires an extra byte for '\0' so dest needs to have a size of
n+1
representation.
* client/X11/xf_gdi.c:
Use freerdp_color_convert_drawing_order_color_to_gdi_color() to convert
from drawing order color representation to GDI color representation
troughout.
* client/X11/xf_graphics.c: Likewise.
* Zeroing xevent helped address some erratic behavior.
* valgrind complained about using xfBitmap uninitialized
during shutdown, traced it back to the initialization.
Bitmap_Prototype->size > sizeof(rdpBitmap).
* Early exit from recv_tpkt_pdu is necessary to address
a shutdown crash - the channelId value was being used
without being set in the disconnect case.
* libfreerdp/gdi/gdi.c:
(gdi_patblt): Fix a call to freerdp_mono_image_convert() which was
still passed colors in drawing order representation instead of GDI
representation.
* libfreerdp/codec/color.c (freerdp_mono_image_convert): Update the
1bpp -> 16bpp conversion code to reflect the fact that the foreground
and the background colors are in GDI representation now.