Diffusion KIO 4306dce1e8d9

[CopyJob] Fix crash when copying an already existing dir and pressing "Skip"

Authored by ahmadsamir on Sep 6 2019, 2:04 PM.

Description

[CopyJob] Fix crash when copying an already existing dir and pressing "Skip"

Summary:
In copyNextFile() if all files have been skipped QList::erase() will
return end() iterator, accessing the element it denotes will cause
a segmentation fault. Make sure the iterator is valid if it's changed
inside the while loop, if we're going to use it before control reaches
the loop condition.

Add a unit test.

BUG: 408350
FIXED-IN: 5.62.0

Test Plan:
kioclient5 copy SOME_DIR_WITH_FILES DEST
kioclient5 copy --interactive SOME_DIR_WITH_FILES DEST

  • In the "folder already exists" dialog enable "Apply to all" then hit "Skip"
  • Without the patch you'd get a segmentation fault, with the patch the copy should finish as expected

All unit tests passed (except kiocore-kacltest, but that's unrelated).

Reviewers: Frameworks, dfaure

Reviewed By: dfaure

Subscribers: kde-frameworks-devel

Tags: Frameworks

Differential Revision: https://phabricator.kde.org/D23708

Details