Skip to content

Commit

Permalink
Fix bad encoding of mime data which could cause crashes
Browse files Browse the repository at this point in the history
  • Loading branch information
captainhammy committed Jul 7, 2019
1 parent 54f05b9 commit aae84a4
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 7 deletions.
4 changes: 2 additions & 2 deletions python/ht/ui/aovs/models.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -767,7 +767,7 @@ def mimeData(self, indexes):


mime_data = QtCore.QMimeData() mime_data = QtCore.QMimeData()


mime_data.setData("text/csv", pickle.dumps(items)) mime_data.setData("text/csv", QtCore.QByteArray(pickle.dumps(items)))


return mime_data return mime_data


Expand Down Expand Up @@ -865,7 +865,7 @@ def dropMimeData(self, data, action, row, column, parent): # pylint: disable=un
if not data.hasFormat("text/csv"): if not data.hasFormat("text/csv"):
return False return False


self.insert_data(pickle.loads(data.data("text/csv"))) self.insert_data(pickle.loads(data.data("text/csv").data()))


return True return True


Expand Down
11 changes: 6 additions & 5 deletions python/ht/ui/aovs/widgets.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -1025,7 +1025,7 @@ def dragEnterEvent(self, event):
"""Event occurring when something is dragged into the widget.""" """Event occurring when something is dragged into the widget."""
# Dropping our items. # Dropping our items.
if event.mimeData().hasFormat("text/csv"): if event.mimeData().hasFormat("text/csv"):
data = pickle.loads(event.mimeData().data("text/csv")) data = pickle.loads(event.mimeData().data("text/csv").data())


if not data: if not data:
event.ignore() event.ignore()
Expand Down Expand Up @@ -1053,14 +1053,14 @@ def dropEvent(self, event):
# Handle our own drop events. # Handle our own drop events.
if mime_data.hasFormat("text/csv"): if mime_data.hasFormat("text/csv"):
# Extract the serialized json mime data from the event. # Extract the serialized json mime data from the event.
data = pickle.loads(mime_data.data("text/csv")) data = pickle.loads(mime_data.data("text/csv").data())


# Flatten any data when moving with Ctrl. # Flatten any data when moving with Ctrl.
if event.keyboardModifiers() == QtCore.Qt.ControlModifier: if event.keyboardModifiers() == QtCore.Qt.ControlModifier:
data = utils.flattenList(data) data = utils.flattenList(data)


# Repack the data with out flattened list. # Repack the data with our flattened list.
mime_data.setData("text/csv", pickle.dumps(data)) mime_data.setData("text/csv", QtCore.QByteArray(pickle.dumps(data)))


# Try to handle dropping nodes on the tree. # Try to handle dropping nodes on the tree.
elif mime_data.hasFormat("text/plain"): elif mime_data.hasFormat("text/plain"):
Expand Down Expand Up @@ -1100,7 +1100,7 @@ def dropEvent(self, event):
# If we've found any nodes we'll add the AOV data and remove the # If we've found any nodes we'll add the AOV data and remove the
# old data. # old data.
if found_nodes: if found_nodes:
mime_data.setData("text/csv", pickle.dumps(new_data)) mime_data.setData("text/csv", QtCore.QByteArray(pickle.dumps(new_data)))
mime_data.removeFormat("text/plain") mime_data.removeFormat("text/plain")


# Call the superclass dropEvent() with our possibly modified data to # Call the superclass dropEvent() with our possibly modified data to
Expand Down Expand Up @@ -1594,6 +1594,7 @@ def uninstallListener(self, nodes):
if index is not None: if index is not None:
model.remove_index(index) model.remove_index(index)



# ============================================================================= # =============================================================================
# New Group Widgets # New Group Widgets
# ============================================================================= # =============================================================================
Expand Down

0 comments on commit aae84a4

Please sign in to comment.