Remove unnecessary clipboard data copy.
authorArmin Novak <armin.novak@thincast.com>
Fri, 5 Apr 2019 08:04:01 +0000 (10:04 +0200)
committerArmin Novak <armin.novak@thincast.com>
Fri, 5 Apr 2019 08:04:36 +0000 (10:04 +0200)
channels/cliprdr/server/cliprdr_main.c

index c2a0f7a..fa22065 100644 (file)
@@ -929,36 +929,28 @@ static UINT cliprdr_server_receive_format_data_response(
 {
        CLIPRDR_FORMAT_DATA_RESPONSE formatDataResponse;
        UINT error = CHANNEL_RC_OK;
-       BYTE* requestedFormatData = NULL;
+
        WLog_DBG(TAG, "CliprdrClientFormatDataResponse");
        formatDataResponse.msgType = CB_FORMAT_DATA_RESPONSE;
        formatDataResponse.msgFlags = header->msgFlags;
        formatDataResponse.dataLen = header->dataLen;
        formatDataResponse.requestedFormatData = NULL;
 
-       if (Stream_GetRemainingLength(s) < header->dataLen)
+       if (header->dataLen)
+               formatDataResponse.requestedFormatData = Stream_Pointer(s);
+
+       if (!Stream_SafeSeek(s, header->dataLen))
        {
                WLog_ERR(TAG, "not enough data in stream!");
                return ERROR_INVALID_DATA;
        }
 
-       if (header->dataLen)
-       {
-               requestedFormatData = (BYTE*) malloc(header->dataLen);
-               if (!requestedFormatData)
-                       return ERROR_OUTOFMEMORY;
-
-               Stream_Read(s, requestedFormatData, header->dataLen);
-               formatDataResponse.requestedFormatData = requestedFormatData;
-       }
-
        IFCALLRET(context->ClientFormatDataResponse, error, context,
                  &formatDataResponse);
 
        if (error)
                WLog_ERR(TAG, "ClientFormatDataResponse failed with error %"PRIu32"!", error);
 
-       free(requestedFormatData);
        return error;
 }