platform/upstream/freerdp.git
9 years agoAdded ORIENTATION_PREFERENCE from WinUser.h.
Armin Novak [Thu, 10 Sep 2015 11:26:37 +0000 (13:26 +0200)]
Added ORIENTATION_PREFERENCE from WinUser.h.

9 years agoMerge pull request #2868 from nfedera/fix-inverted-pointer-colors
Bernhard Miklautz [Mon, 7 Sep 2015 09:42:07 +0000 (11:42 +0200)]
Merge pull request #2868 from nfedera/fix-inverted-pointer-colors

improve handling of inverted pointer colors

9 years agoMerge pull request #2873 from mfleisz/makecert_change
Bernhard Miklautz [Mon, 7 Sep 2015 09:15:51 +0000 (11:15 +0200)]
Merge pull request #2873 from mfleisz/makecert_change

makecert: Remove key usage attribute

9 years agomakecert: Remove key usage attribute
Martin Fleisz [Mon, 7 Sep 2015 08:43:19 +0000 (10:43 +0200)]
makecert: Remove key usage attribute

The original makecert tool won't add this tribute to a generated
certificate. Adding this attribute might cause problems when using the
certificate with other apps (i.e. Qt SSL).

9 years agoMerge pull request #2872 from akallabeth/recording_fix
Hardening [Mon, 7 Sep 2015 08:26:34 +0000 (10:26 +0200)]
Merge pull request #2872 from akallabeth/recording_fix

Fixed error checking and recording reset.

9 years agoMerge pull request #2765 from akallabeth/connect_abort
MartinHaimberger [Mon, 7 Sep 2015 08:05:24 +0000 (10:05 +0200)]
Merge pull request #2765 from akallabeth/connect_abort

Connect abort and unified TCP connect

9 years agoFixed error checking and recording reset.
Armin Novak [Mon, 7 Sep 2015 07:24:45 +0000 (09:24 +0200)]
Fixed error checking and recording reset.

9 years agoFixed CreateProcess argument initialisation.
Armin Novak [Sat, 5 Sep 2015 16:55:08 +0000 (18:55 +0200)]
Fixed CreateProcess argument initialisation.

9 years agoEnable RFX for test connection, now required by sample server.
Armin Novak [Sat, 5 Sep 2015 15:00:27 +0000 (17:00 +0200)]
Enable RFX for test connection, now required by sample server.

9 years agoResetting abortEvent on disconnect to avoid race during connect.
Armin Novak [Sat, 5 Sep 2015 14:26:46 +0000 (16:26 +0200)]
Resetting abortEvent on disconnect to avoid race during connect.

9 years agoFixed error handling for rdp_client_connect fail.
Armin Novak [Sat, 5 Sep 2015 14:26:29 +0000 (16:26 +0200)]
Fixed error handling for rdp_client_connect fail.

9 years agoWSAEvent fixes ported from realjiangms pull 2870.
Armin Novak [Sat, 5 Sep 2015 13:18:01 +0000 (15:18 +0200)]
WSAEvent fixes ported from realjiangms pull 2870.

9 years agoRemoved rdp disconnect, using unified abortEvent instead.
Armin Novak [Sat, 5 Sep 2015 12:57:30 +0000 (14:57 +0200)]
Removed rdp disconnect, using unified abortEvent instead.

9 years agoMerge pull request #2869 from peterh/negorigin
Bernhard Miklautz [Fri, 4 Sep 2015 15:20:17 +0000 (17:20 +0200)]
Merge pull request #2869 from peterh/negorigin

X11 /app: Fix drawing with negative window origin

9 years agoFix drawing with negative window origin
Peter Harris [Thu, 3 Sep 2015 22:42:53 +0000 (18:42 -0400)]
Fix drawing with negative window origin

Since REGION16 uses unsigned values, when appWindow->x or appWindow->y
is negative, the region will have a very large left or top value.

Avoid this problem by clamping to 0 before casting to an unsigned value.

9 years agoimprove handling of inverted pointer colors
Norbert Federa [Thu, 3 Sep 2015 14:50:41 +0000 (16:50 +0200)]
improve handling of inverted pointer colors

9 years agoMerge pull request #2865 from akallabeth/h264_ignore_errors
Norbert Federa [Thu, 3 Sep 2015 12:42:36 +0000 (14:42 +0200)]
Merge pull request #2865 from akallabeth/h264_ignore_errors

[H264] ignore decoder errors

9 years agoMerge pull request #2867 from akallabeth/channel_error_reset
Martin Fleisz [Thu, 3 Sep 2015 12:22:40 +0000 (14:22 +0200)]
Merge pull request #2867 from akallabeth/channel_error_reset

Resetting channel error on freerdp_connect.

9 years agoResetting channel error on connect.
Armin Novak [Thu, 3 Sep 2015 11:43:08 +0000 (13:43 +0200)]
Resetting channel error on connect.

9 years agoIgnoring H264 decompression failures.
Armin Novak [Thu, 3 Sep 2015 10:05:02 +0000 (12:05 +0200)]
Ignoring H264 decompression failures.

When connecting to windows 8.1 machines the remote RDP server
implementation sometimes sends invalid H264 data. To avoid client
disconnections ignore the broken updates.

9 years agoGeneralized rdpgfx_decode to work with all codecs.
Armin Novak [Thu, 3 Sep 2015 10:00:22 +0000 (12:00 +0200)]
Generalized rdpgfx_decode to work with all codecs.

9 years agoMerge pull request #2861 from llyzs/winmm_volume_fix
Martin Fleisz [Wed, 2 Sep 2015 10:43:11 +0000 (12:43 +0200)]
Merge pull request #2861 from llyzs/winmm_volume_fix

rdpsnd/winmm: fix SetVolume when device is not opened.

9 years agoMerge pull request #2852 from bmiklautz/process_env
MartinHaimberger [Wed, 2 Sep 2015 08:09:11 +0000 (10:09 +0200)]
Merge pull request #2852 from bmiklautz/process_env

Update CreateProcess and rfx

9 years agordpsnd/winmm: fix SetVolume when device is not opened.
Vic Lee [Wed, 2 Sep 2015 07:15:15 +0000 (15:15 +0800)]
rdpsnd/winmm: fix SetVolume when device is not opened.

9 years agoMerge pull request #2825 from akallabeth/pointer_decoding_fix
Norbert Federa [Tue, 1 Sep 2015 09:09:42 +0000 (11:09 +0200)]
Merge pull request #2825 from akallabeth/pointer_decoding_fix

Fixed color pointer decoding.

9 years agoIgnore AND mask for 32 bit pointer.
Armin Novak [Tue, 1 Sep 2015 07:25:41 +0000 (09:25 +0200)]
Ignore AND mask for 32 bit pointer.

9 years agoMerge pull request #2855 from akallabeth/memleak_fixes
Bernhard Miklautz [Mon, 31 Aug 2015 07:50:21 +0000 (09:50 +0200)]
Merge pull request #2855 from akallabeth/memleak_fixes

Memleak fixes

9 years agoFixed broken cleanup code.
Armin Novak [Mon, 31 Aug 2015 07:13:15 +0000 (09:13 +0200)]
Fixed broken cleanup code.

9 years agoMerge pull request #2854 from bmiklautz/issue/2853
Hardening [Sun, 30 Aug 2015 20:31:08 +0000 (22:31 +0200)]
Merge pull request #2854 from bmiklautz/issue/2853

settings: update settings/help to match

9 years agoFixed cleanup code.
Armin Novak [Fri, 28 Aug 2015 09:46:24 +0000 (11:46 +0200)]
Fixed cleanup code.

9 years agoFixed memory leak.
Armin Novak [Fri, 28 Aug 2015 09:17:20 +0000 (11:17 +0200)]
Fixed memory leak.

9 years agosettings: update settings/help to match
Bernhard Miklautz [Fri, 28 Aug 2015 09:09:38 +0000 (11:09 +0200)]
settings: update settings/help to match

* wallpaper was off but help said "default: on"
* compression is on but help said "default: off"

Fixes #2853

9 years agoFixed memory leak.
Armin Novak [Fri, 28 Aug 2015 09:07:25 +0000 (11:07 +0200)]
Fixed memory leak.

9 years agoFixed memory leak.
Armin Novak [Fri, 28 Aug 2015 09:06:26 +0000 (11:06 +0200)]
Fixed memory leak.

9 years agoFixed memory leak.
Armin Novak [Fri, 28 Aug 2015 09:05:44 +0000 (11:05 +0200)]
Fixed memory leak.

9 years agoFixed memory leak.
Armin Novak [Fri, 28 Aug 2015 09:01:34 +0000 (11:01 +0200)]
Fixed memory leak.

9 years agoFixed NONNULL argument warnings.
Armin Novak [Fri, 28 Aug 2015 08:59:48 +0000 (10:59 +0200)]
Fixed NONNULL argument warnings.

9 years agoFixed NONNULL argument warnings.
Armin Novak [Fri, 28 Aug 2015 08:58:20 +0000 (10:58 +0200)]
Fixed NONNULL argument warnings.

9 years agoFixed resource leak.
Armin Novak [Fri, 28 Aug 2015 08:53:43 +0000 (10:53 +0200)]
Fixed resource leak.

9 years agoFixed resource cleanup double free.
Armin Novak [Fri, 28 Aug 2015 08:51:27 +0000 (10:51 +0200)]
Fixed resource cleanup double free.

9 years agoCreateProcess: add stdin/out/err redirection
Bernhard Miklautz [Fri, 28 Aug 2015 08:31:22 +0000 (10:31 +0200)]
CreateProcess: add stdin/out/err redirection

When launching a new process stdin/stdout/stderr can be redirected by
passing the corresponding HANDLEs in the passed lpStartupInfo structure.
This is required for example if a pipe should be used as stdin/stdout.

If set in lpStartupInfo the file descriptor of the passed handle is
now used. The test was updated accordingly.

9 years agocodec/rfx: update comment and remove WLog_ERR
Bernhard Miklautz [Fri, 28 Aug 2015 08:26:42 +0000 (10:26 +0200)]
codec/rfx: update comment and remove WLog_ERR

With revision 17.0 of [MS-RDPRFX] the behavior when numRects == 0 is
documented.
This commit updates the comment and removes the error logging.

9 years agoMerge pull request #2716 from realjiangms/shadow_xor_pointer
Marc-André Moreau [Thu, 27 Aug 2015 14:20:18 +0000 (10:20 -0400)]
Merge pull request #2716 from realjiangms/shadow_xor_pointer

server/shadow: Fix alpha pointer message so that it allows pixel with both 'xor' and 'and'

9 years agoMerge pull request #2739 from realjiangms/shadow_resize
Marc-André Moreau [Thu, 27 Aug 2015 14:19:25 +0000 (10:19 -0400)]
Merge pull request #2739 from realjiangms/shadow_resize

server/shadow: Enhancement regarding the screen and resolution - addresize support and fix subRect feature

9 years agoMerge pull request #2798 from psumbera/master
Marc-André Moreau [Thu, 27 Aug 2015 14:15:29 +0000 (10:15 -0400)]
Merge pull request #2798 from psumbera/master

This array is so big that it eats whole stack for the thread and makes

9 years agoMerge pull request #2827 from HenryJacques/winpr_cleanup
Marc-André Moreau [Thu, 27 Aug 2015 14:11:50 +0000 (10:11 -0400)]
Merge pull request #2827 from HenryJacques/winpr_cleanup

Remove unused variable in RegQueryValueExA()

9 years agoMerge pull request #2838 from akallabeth/smartcard_no_readers
Marc-André Moreau [Thu, 27 Aug 2015 14:05:23 +0000 (10:05 -0400)]
Merge pull request #2838 from akallabeth/smartcard_no_readers

Added return value checks for smartcard functions.

9 years agoMerge pull request #2844 from akallabeth/getcomputername_fix
Marc-André Moreau [Thu, 27 Aug 2015 14:04:48 +0000 (10:04 -0400)]
Merge pull request #2844 from akallabeth/getcomputername_fix

Getcomputername fix

9 years agoMerge pull request #2829 from akallabeth/mf_compile_option
Marc-André Moreau [Thu, 27 Aug 2015 14:00:47 +0000 (10:00 -0400)]
Merge pull request #2829 from akallabeth/mf_compile_option

media foundation support now a compile time option.

9 years agoResetting signals on freerdp_connect.
Armin Novak [Tue, 4 Aug 2015 11:34:28 +0000 (13:34 +0200)]
Resetting signals on freerdp_connect.

9 years agoAdded missing NULL pointer checks.
Armin Novak [Thu, 30 Jul 2015 06:18:57 +0000 (08:18 +0200)]
Added missing NULL pointer checks.

9 years agoFixed uninitialised events.
Armin Novak [Wed, 29 Jul 2015 13:52:52 +0000 (15:52 +0200)]
Fixed uninitialised events.

9 years agoAborting transport layer now if requested.
Armin Novak [Wed, 29 Jul 2015 13:46:40 +0000 (15:46 +0200)]
Aborting transport layer now if requested.

9 years agoFixed WSAEventSelect mode reset.
Armin Novak [Tue, 14 Jul 2015 09:58:01 +0000 (11:58 +0200)]
Fixed WSAEventSelect mode reset.

9 years agoAdded unit test for freerdp_connect
Armin Novak [Fri, 3 Jul 2015 09:56:57 +0000 (11:56 +0200)]
Added unit test for freerdp_connect

* Tests connection to not existing host (timeout)
* Tests connection to not exising host with abort.
* Tests connection to sfreerdp-server on localhost.

9 years agoImplemented Async TCP connect with abort event
Armin Novak [Fri, 3 Jul 2015 09:49:40 +0000 (11:49 +0200)]
Implemented Async TCP connect with abort event

* Implemented unified freerdp_tcp_connect_timeout with connect abort.
* Implemented unified freerdp_tcp_connect_multi with connect abort.
* Added connect abort to freerdp_tcp_connect.
* Added freerdp_abort_connect and abortEvent.

9 years agoMerge pull request #2785 from MartinHaimberger/mh-channel-fix
Marc-André Moreau [Thu, 27 Aug 2015 13:24:10 +0000 (09:24 -0400)]
Merge pull request #2785 from MartinHaimberger/mh-channel-fix

Channel hardening and fixing

9 years agoRemove WIN32ERROR type
Martin Haimberger [Thu, 27 Aug 2015 12:25:09 +0000 (05:25 -0700)]
Remove WIN32ERROR type

All return values are UINT now.

9 years agoMerge pull request #2846 from llyzs/monitor
Hardening [Thu, 27 Aug 2015 09:42:45 +0000 (11:42 +0200)]
Merge pull request #2846 from llyzs/monitor

Read and write desktop and monitor data.

9 years agoMerge pull request #2847 from akallabeth/base64_decode_ensure_null_termination
Martin Fleisz [Thu, 27 Aug 2015 09:28:37 +0000 (11:28 +0200)]
Merge pull request #2847 from akallabeth/base64_decode_ensure_null_termination

Ensure output of crypto_base64_decode is NULL terminated.

9 years agogcc: read and write desktop scale settings in core data.
Vic Lee [Thu, 27 Aug 2015 08:18:22 +0000 (16:18 +0800)]
gcc: read and write desktop scale settings in core data.

9 years agoEnsure output of crypto_base64_decode is NULL terminated.
Armin Novak [Thu, 27 Aug 2015 07:27:23 +0000 (09:27 +0200)]
Ensure output of crypto_base64_decode is NULL terminated.

9 years agogcc: read and write monitor extended data.
Vic Lee [Thu, 27 Aug 2015 06:10:42 +0000 (14:10 +0800)]
gcc: read and write monitor extended data.

9 years agox509_get_default_name tries to get FQDN before hostname now.
Armin Novak [Tue, 25 Aug 2015 15:44:03 +0000 (17:44 +0200)]
x509_get_default_name tries to get FQDN before hostname now.

9 years agoFixed GetComputerNameExA and GetComputerNameA.
Armin Novak [Tue, 25 Aug 2015 15:43:22 +0000 (17:43 +0200)]
Fixed GetComputerNameExA and GetComputerNameA.

9 years agoMerge remote-tracking branch 'upstream/master' into mh-channel-fix
Martin Haimberger [Tue, 25 Aug 2015 07:07:04 +0000 (00:07 -0700)]
Merge remote-tracking branch 'upstream/master' into mh-channel-fix

Conflicts:
channels/drdynvc/client/drdynvc_main.c
channels/rdpgfx/client/rdpgfx_main.c
client/X11/xf_gfx.c

9 years agoAdded return value checks.
Armin Novak [Wed, 19 Aug 2015 10:50:48 +0000 (12:50 +0200)]
Added return value checks.

9 years agomedia foundation support now a compile time option.
Armin Novak [Tue, 11 Aug 2015 05:51:59 +0000 (07:51 +0200)]
media foundation support now a compile time option.

9 years agoFixed duplicate int.
Armin Novak [Thu, 6 Aug 2015 12:43:39 +0000 (14:43 +0200)]
Fixed duplicate int.

9 years agoFixed mac API.
Armin Novak [Thu, 6 Aug 2015 12:11:36 +0000 (14:11 +0200)]
Fixed mac API.

9 years agoAdded length arguments and checks.
Armin Novak [Thu, 6 Aug 2015 09:24:42 +0000 (11:24 +0200)]
Added length arguments and checks.

9 years agoRemove unused variable
HenryJacques [Wed, 5 Aug 2015 16:38:50 +0000 (18:38 +0200)]
Remove unused variable

9 years agoFixed return and argument checks.
Armin Novak [Wed, 5 Aug 2015 15:32:46 +0000 (17:32 +0200)]
Fixed return and argument checks.

9 years agoFixed argument checks.
Armin Novak [Wed, 5 Aug 2015 15:32:38 +0000 (17:32 +0200)]
Fixed argument checks.

9 years agoFixed pointer update decoding with NULL mask.
Armin Novak [Wed, 5 Aug 2015 15:19:46 +0000 (17:19 +0200)]
Fixed pointer update decoding with NULL mask.

9 years agoMerge pull request #2823 from awakecoding/master
Marc-André Moreau [Tue, 4 Aug 2015 16:33:37 +0000 (12:33 -0400)]
Merge pull request #2823 from awakecoding/master

egfx channel open/close fix, H.264 Media Foundation decoder support

9 years agoMerge branch 'master' of github.com:FreeRDP/FreeRDP
Marc-André Moreau [Tue, 4 Aug 2015 15:55:38 +0000 (11:55 -0400)]
Merge branch 'master' of github.com:FreeRDP/FreeRDP

9 years agolibfreerdp-codec: fix Windows XP build for H.264 decoder
Marc-André Moreau [Tue, 4 Aug 2015 15:55:03 +0000 (11:55 -0400)]
libfreerdp-codec: fix Windows XP build for H.264 decoder

9 years agolibfreerdp-codec: fix leaks in H.264 Media Foundation decoder
Marc-André Moreau [Tue, 4 Aug 2015 14:26:13 +0000 (10:26 -0400)]
libfreerdp-codec: fix leaks in H.264 Media Foundation decoder

9 years agolibfreerdp-codec: initial Media Foundation H.264 decoder support
Marc-André Moreau [Mon, 3 Aug 2015 20:21:48 +0000 (16:21 -0400)]
libfreerdp-codec: initial Media Foundation H.264 decoder support

9 years agoMerge pull request #2811 from clivest/client_channel_interface_leak_fix
Bernhard Miklautz [Mon, 3 Aug 2015 07:23:54 +0000 (09:23 +0200)]
Merge pull request #2811 from clivest/client_channel_interface_leak_fix

Fix race condition in freerdp_channels_client_load that could cause memory leak

9 years agoMerge pull request #2817 from FreeRDP/mh-fix-collection-free
Martin Fleisz [Fri, 31 Jul 2015 06:19:03 +0000 (08:19 +0200)]
Merge pull request #2817 from FreeRDP/mh-fix-collection-free

fixed misc *_free functions to accept NULL

9 years agolibfreerdp-codec: add more Media Foundation H.264 code
Marc-André Moreau [Thu, 30 Jul 2015 18:07:35 +0000 (14:07 -0400)]
libfreerdp-codec: add more Media Foundation H.264 code

9 years agofixed wrong returntype under windows
Martin Haimberger [Thu, 30 Jul 2015 14:50:10 +0000 (07:50 -0700)]
fixed wrong returntype under windows

9 years agoMerge remote-tracking branch 'upstream/master' into mh-channel-fix
Martin Haimberger [Thu, 30 Jul 2015 14:29:12 +0000 (07:29 -0700)]
Merge remote-tracking branch 'upstream/master' into mh-channel-fix

Conflicts:
channels/smartcard/client/smartcard_main.c
channels/smartcard/client/smartcard_operations.c

9 years agofixed misc *_free functions to accept NULL
Martin Haimberger [Thu, 30 Jul 2015 14:02:36 +0000 (07:02 -0700)]
fixed misc *_free functions to accept NULL

Following types of collections support now
NULL in the free call:

* ArrayList
* BitStream
* ContdownEvent
* Dictionary
* KeyValuePair
* MessageQueue

9 years agomisc fixes:
Martin Haimberger [Thu, 30 Jul 2015 13:49:21 +0000 (06:49 -0700)]
misc fixes:

fixed all bugs from the review
checking all WaitFor*Object/s calls

9 years agoMerge pull request #2815 from FreeRDP/mh-wait-SetLastError
Hardening [Thu, 30 Jul 2015 12:09:13 +0000 (14:09 +0200)]
Merge pull request #2815 from FreeRDP/mh-wait-SetLastError

winpr: WaitFor*Ojbect/s set lastError now

9 years agowinpr: WaitFor*Ojbect/s set lastError now
Martin Haimberger [Thu, 30 Jul 2015 09:52:11 +0000 (02:52 -0700)]
winpr: WaitFor*Ojbect/s set lastError now

9 years agoMerge pull request #3 from bmiklautz/pull/2785
MartinHaimberger [Thu, 30 Jul 2015 09:05:00 +0000 (11:05 +0200)]
Merge pull request #3 from bmiklautz/pull/2785

Misc fixes

9 years agolibfreerdp-codec: start H.264 MediaFoundation support
Marc-André Moreau [Wed, 29 Jul 2015 20:33:04 +0000 (16:33 -0400)]
libfreerdp-codec: start H.264 MediaFoundation support

9 years agoremdesk,encomps: misc fixes
Bernhard Miklautz [Wed, 29 Jul 2015 15:32:09 +0000 (17:32 +0200)]
remdesk,encomps: misc fixes

* only free stream when an error occurs
* ignore unhanded messages instead of throwing an error
* fix memory leak in settings

9 years agoFix race condition in freerdp_channels_client_load
Clive Stevens [Wed, 29 Jul 2015 13:08:31 +0000 (14:08 +0100)]
Fix race condition in freerdp_channels_client_load

If g_pInterface is set to NULL outside the critical section in one thread
while another thread is in the critical section, the channel client context
allocated in the VirtualChannelEntry won't end up getting freed.

The channel client context is normally loaded from g_pInterface in
FreeRDP_VirtualChannelInit and stored in the pChannelInitData, then copied
from there onto the pChannelOpenData structure in FreeRDP_VirtualChannelOpen
and finally freed in freerdp_channels_free.

9 years agolibfreerdp-codec: add x264 stubs
Marc-André Moreau [Tue, 28 Jul 2015 20:01:34 +0000 (16:01 -0400)]
libfreerdp-codec: add x264 stubs

9 years agoUpdate version to 1.4.5
Bernhard Miklautz [Tue, 28 Jul 2015 15:23:16 +0000 (17:23 +0200)]
Update version to 1.4.5

9 years agoMerge branch 'master' of github.com:FreeRDP/FreeRDP
Marc-André Moreau [Tue, 28 Jul 2015 13:21:33 +0000 (09:21 -0400)]
Merge branch 'master' of github.com:FreeRDP/FreeRDP

9 years agoMerge pull request #2799 from kaliway/scardlistreaders-fix
Marc-André Moreau [Tue, 28 Jul 2015 12:51:03 +0000 (08:51 -0400)]
Merge pull request #2799 from kaliway/scardlistreaders-fix

Smartcard Reader Connection Handling

9 years agoMerge pull request #2801 from bmiklautz/fix/thread
Marc-André Moreau [Tue, 28 Jul 2015 12:47:06 +0000 (08:47 -0400)]
Merge pull request #2801 from bmiklautz/fix/thread

winpr/thread: small cleanups

9 years agoMerge pull request #2804 from bmiklautz/fix/misc
Marc-André Moreau [Tue, 28 Jul 2015 12:46:27 +0000 (08:46 -0400)]
Merge pull request #2804 from bmiklautz/fix/misc

Misc fixes

9 years agoMerge pull request #2793 from rkondratenko/pcsclite-transactions
Marc-André Moreau [Tue, 28 Jul 2015 12:44:58 +0000 (08:44 -0400)]
Merge pull request #2793 from rkondratenko/pcsclite-transactions

Fix for transactions support for Smart Cards