Limited clipboard size to 1kb when SSL is enabled #4601
@XinyuHou I had no choice but to block clipboard data over 1kb in size... anything over that and you get an access violation.
This commit is contained in:
parent
fd72bf17ce
commit
8b975878c2
|
@ -64,6 +64,9 @@ public:
|
||||||
//! Get server which owns this listener
|
//! Get server which owns this listener
|
||||||
Server* getServer() { return m_server; }
|
Server* getServer() { return m_server; }
|
||||||
|
|
||||||
|
//! Return true if using secure network connection
|
||||||
|
bool isSecure() { return m_useSecureNetwork; }
|
||||||
|
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -29,6 +29,11 @@
|
||||||
// ClientProxy1_6
|
// ClientProxy1_6
|
||||||
//
|
//
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
kSslClipboardMaxSize = 1024
|
||||||
|
};
|
||||||
|
|
||||||
ClientProxy1_6::ClientProxy1_6(const String& name, synergy::IStream* stream, Server* server, IEventQueue* events) :
|
ClientProxy1_6::ClientProxy1_6(const String& name, synergy::IStream* stream, Server* server, IEventQueue* events) :
|
||||||
ClientProxy1_5(name, stream, server, events),
|
ClientProxy1_5(name, stream, server, events),
|
||||||
m_events(events)
|
m_events(events)
|
||||||
|
@ -57,11 +62,19 @@ ClientProxy1_6::setClipboard(ClipboardID id, const IClipboard* clipboard)
|
||||||
size_t size = data.size();
|
size_t size = data.size();
|
||||||
LOG((CLOG_DEBUG "sending clipboard %d to \"%s\"", id, getName().c_str()));
|
LOG((CLOG_DEBUG "sending clipboard %d to \"%s\"", id, getName().c_str()));
|
||||||
|
|
||||||
StreamChunker::sendClipboard(data, size, id, 0, m_events, this);
|
// HACK: if using SSL, don't send large clipboards (#4601)
|
||||||
|
bool send = true;
|
||||||
|
if (getServer()->isSecure() && (size > kSslClipboardMaxSize)) {
|
||||||
|
send = false;
|
||||||
|
LOG((CLOG_WARN "large clipboards not supported with ssl, size=%d", size));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (send) {
|
||||||
|
StreamChunker::sendClipboard(data, size, id, 0, m_events, this);
|
||||||
LOG((CLOG_DEBUG "sent clipboard size=%d", size));
|
LOG((CLOG_DEBUG "sent clipboard size=%d", size));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ClientProxy1_6::handleClipboardSendingEvent(const Event& event, void*)
|
ClientProxy1_6::handleClipboardSendingEvent(const Event& event, void*)
|
||||||
|
|
|
@ -2389,3 +2389,9 @@ Server::dragInfoReceived(UInt32 fileNum, String content)
|
||||||
|
|
||||||
m_screen->startDraggingFiles(m_dragFileList);
|
m_screen->startDraggingFiles(m_dragFileList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
Server::isSecure() const
|
||||||
|
{
|
||||||
|
return m_clientListener->isSecure();
|
||||||
|
}
|
||||||
|
|
|
@ -175,6 +175,9 @@ public:
|
||||||
//! Return received file data
|
//! Return received file data
|
||||||
String& getReceivedFileData() { return m_receivedFileData; }
|
String& getReceivedFileData() { return m_receivedFileData; }
|
||||||
|
|
||||||
|
//! Return true if using secure network connection
|
||||||
|
bool isSecure() const;
|
||||||
|
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
Loading…
Reference in New Issue