#define DND_MAX_PATH 6144
#define DNDMSG_HEADERSIZE_V3 ((3 * sizeof (uint32)) + (1 * sizeof (uint8)))
-/* Hard limits we never want to exceed */
-/* The maximum size of a serializied DnDMsg. Close to 4M. */
+/*
+ * Hard limits we never want to exceed. The maximum size of a serializied
+ * DnDMsg. Close to 4M for Workstion/Fusion, 4G for Horzion.
+ */
+#ifdef VMX86_HORIZON_VIEW
+#define DNDMSG_MAX_ARGSZ (0xffffffff - DNDMSG_HEADERSIZE_V3)
+#else
#define DNDMSG_MAX_ARGSZ ((1 << 22) - DNDMSG_HEADERSIZE_V3)
+#endif
/* The maximum number of arguments we can hold */
#define DNDMSG_MAX_ARGS 64
/*********************************************************
- * Copyright (C) 2010-2017 VMware, Inc. All rights reserved.
+ * Copyright (C) 2010-2019 VMware, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published
return FALSE;
}
- /* Payload should be smaller than the whole binary
+ /*
+ * For Workstation/Fusion Payload should be smaller than the whole binary
* and should not be put beyond the binary tail.
*
* binarySize should be smaller than DND_CP_MSG_MAX_BINARY_SIZE_V4, so that
* integer overflow is not possible since DND_CP_MSG_MAX_BINARY_SIZE_V4 * 2
- * is guaranteed to be less than MAX_UINT32.
+ * is guaranteed to be less than MAX_UINT32. Horizon removes this limitation
*/
+#ifndef VMX86_HORIZON_VIEW
ASSERT_ON_COMPILE(DND_CP_MSG_MAX_BINARY_SIZE_V4 <= MAX_UINT32 / 2);
+#endif
if (msgHdr->payloadOffset > msgHdr->binarySize ||
msgHdr->payloadSize > msgHdr->binarySize ||
msgHdr->payloadOffset + msgHdr->payloadSize > msgHdr->binarySize) {
/*********************************************************
- * Copyright (C) 2010-2016 VMware, Inc. All rights reserved.
+ * Copyright (C) 2010-2019 VMware, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published
#define DND_CP_MSG_HEADERSIZE_V4 (sizeof (DnDCPMsgHdrV4))
#define DND_CP_PACKET_MAX_PAYLOAD_SIZE_V4 (DND_MAX_TRANSPORT_PACKET_SIZE - \
DND_CP_MSG_HEADERSIZE_V4)
+#ifdef VMX86_HORIZON_VIEW
+/*
+ * Horizon has no hard limit, but the size field is type of uint32,
+ * 4G-1(0xffffffff) is the maximum size represented.
+ */
+#define DND_CP_MSG_MAX_BINARY_SIZE_V4 0xffffffff
+#else
+// Workstation/fusion have hard limit in size(4M) of DnD Msg, refer to dnd.h
#define DND_CP_MSG_MAX_BINARY_SIZE_V4 (1 << 22)
+#endif
/* DnD version 4 message. */
typedef struct DnDCPMsgV4 {