chinmoyr updated this revision to Diff 16738. chinmoyr marked 4 inline comments as done. chinmoyr edited the test plan for this revision. chinmoyr added a comment.
In my previous revision the logic for showing warning from ioslave was flawed. In case of deleteRecursive everything would have worked out fine but in case of copy the logic for warning would have failed. Since CopyJob creates number of sub jobs, there are as many number of slaves. If there happen to be more than one file with read access restricted then ioslave's warning would have been shown multiple times. In this revision, I added a variable `m_enablePrivilegeExecution`, a public method `isPrivilegeExecutionEnabled` and an additional job flag `PrivilegeExecution` to the KIO Job class. Now if an application want's to execute a privilege file operation, it will 1. create a job with `PrivilegeExecution` flag. 2. the flag will cause the job to set `m_enablePrivilegeExecution` to true. 3. when `execWithElevatedPrivilege()` is called it will first emit `dataReq()` signal. 4. the job will respond with a message "ElevatePrivilege" if it supports it and the slave will continue. The step 2 is very important. Even if the flag is set its upto us to decide which job should support it. And the jobs which support it will also show warnings prior to notifying the slave. This prevents misuse of the job during the brief period of elevated privilege. @dfaure what do you say about the feasibility of this approach? REPOSITORY R241 KIO CHANGES SINCE LAST UPDATE https://phabricator.kde.org/D6197?vs=15729&id=16738 REVISION DETAIL https://phabricator.kde.org/D6197 AFFECTED FILES src/core/job.cpp src/core/job_base.h src/core/job_p.h src/core/simplejob.cpp src/core/simplejob.h src/ioslaves/file/CMakeLists.txt src/ioslaves/file/file.h src/ioslaves/file/file_unix.cpp src/ioslaves/file/file_win.cpp src/ioslaves/file/kauth/CMakeLists.txt src/ioslaves/file/kauth/file.actions src/ioslaves/file/kauth/filehelper.cpp src/ioslaves/file/kauth/filehelper.h To: chinmoyr, elvisangelaccio, #frameworks, dfaure Cc: dfaure, eliasp, aacid