diff --git a/src/plugins/bineditor/bineditor.cpp b/src/plugins/bineditor/bineditor.cpp index fbd2bb43be27f1fc9f5a9e0341d0d6164440db4c..ec33a8889e929d3b7ca972adcecbf3db0035042e 100644 --- a/src/plugins/bineditor/bineditor.cpp +++ b/src/plugins/bineditor/bineditor.cpp @@ -41,6 +41,7 @@ #include <QtGui/QClipboard> #include <QtGui/QFontMetrics> #include <QtGui/QMenu> +#include <QtGui/QMessageBox> #include <QtGui/QPainter> #include <QtGui/QScrollBar> #include <QtGui/QWheelEvent> @@ -1124,7 +1125,13 @@ void BinEditor::copy(bool raw) const int selStart = selectionStart(); const int selEnd = selectionEnd(); if (selStart < selEnd) { - const QByteArray &data = dataMid(selStart, selEnd - selStart); + const int selectionLength = selEnd - selStart; + if (selectionLength >> 22) { + QMessageBox::warning(this, tr("Copying Failed"), + tr("You cannot copy more than 4 MB of binary data.")); + return; + } + const QByteArray &data = dataMid(selStart, selectionLength); if (raw) { QApplication::clipboard()->setText(data); return;