Merge lp://qastaging/~mterry/unity8/tablet-security into lp://qastaging/unity8
Status: | Merged |
---|---|
Approved by: | Michael Zanetti |
Approved revision: | 1278 |
Merged at revision: | 1350 |
Proposed branch: | lp://qastaging/~mterry/unity8/tablet-security |
Merge into: | lp://qastaging/unity8 |
Diff against target: |
917 lines (+518/-75) 9 files modified
qml/Greeter/Greeter.qml (+13/-1) qml/Greeter/GreeterContent.qml (+12/-0) qml/Greeter/LoginList.qml (+19/-6) qml/Shell.qml (+74/-40) tests/qmltests/CMakeLists.txt (+1/-0) tests/qmltests/Greeter/tst_MultiGreeter.qml (+2/-2) tests/qmltests/tst_Shell.qml (+1/-0) tests/qmltests/tst_ShellWithPin.qml (+107/-26) tests/qmltests/tst_TabletShell.qml (+289/-0) |
To merge this branch: | bzr merge lp://qastaging/~mterry/unity8/tablet-security |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
PS Jenkins bot (community) | continuous-integration | Needs Fixing | |
Michael Zanetti (community) | Approve | ||
Unity Team | Pending | ||
Review via email: mp+234219@code.qastaging.launchpad.net |
Commit message
Fix some security issues with the tablet greeter, which allowed the lockscreen to be bypassed. (LP: #1367715)
Recent greeter fixes for phone mode did not fully take the tablet scenario into account. This branch does three main things:
1) Rename fakeActiveForApp because it is nothing but confusing. I renamed the variable itself to lockedApp and added a new variable hasLockedApp, which is infinitely clearer than fakeActiveForApp !== "", which is what we used to use. Since that is a very security-sensitive variable, I figured it's best to be clear.
2) Closed a security bug where if the user could plug in a phone showing the emergency dialer to a bigger screen, thus switching to tablet mode, they could get access to other apps.
3) Closed a security bug where the tablet lockscreen could be left-swiped away.
4) Closed a security bug where the tablet would unlock itself if you launched an app from the indicators or launcher. Now it just focuses the prompt field (much like how the phone shows the lockscreen pin pad).
Description of the change
Fix some security issues with the tablet greeter, which allowed the lockscreen to be bypassed. (LP: #1367715)
Recent greeter fixes for phone mode did not fully take the tablet scenario into account. This branch does four main things:
1) Rename fakeActiveForApp because it is nothing but confusing. I renamed the variable itself to lockedApp and added a new variable hasLockedApp, which is infinitely clearer than fakeActiveForApp !== "", which is what we used to use. Since that is a very security-sensitive variable, I figured it's best to be clear.
2) Closed a security bug where if the user could plug in a phone showing the emergency dialer to a bigger screen, thus switching to tablet mode, they could get access to other apps.
3) Closed a security bug where the tablet lockscreen could be left-swiped away.
4) Closed a security bug where the tablet would unlock itself if you launched an app from the indicators or launcher. Now it just focuses the prompt field (much like how the phone shows the lockscreen pin pad).
This whole branch has really brought home how much the lockscreen/greeter interactions need to be tied more closely together and abstracted. Having them strewn throughout Shell.qml is error-prone and adds a lot of logic to the "master file" that I'd rather have in isolated qml files.
Ideally we'd have one bundled "Greeter" object that would expose a clear API to Shell.qml and would just "do the right thing" regardless of tablet, phone-with-pin, phone-with-
But that's a bigger project for another day.
== Checklist ==
* Are there any related MPs required for this MP to build/function as expected? Please list.
No
* Did you perform an exploratory manual test run of your code change and any related functionality?
Yes
* Did you make sure that your branch does not contain spurious tags?
Yes
* If you changed the packaging (debian), did you subscribe the ubuntu-unity team to this MP?
NA
* If you changed the UI, has there been a design review?
NA
FAILED: Continuous integration, rev:1263 jenkins. qa.ubuntu. com/job/ unity8- ci/4272/ jenkins. qa.ubuntu. com/job/ generic- deb-autopilot- utopic- touch/4709 jenkins. qa.ubuntu. com/job/ unity-phablet- qmluitests- utopic/ 1273 jenkins. qa.ubuntu. com/job/ unity8- utopic- amd64-ci/ 1366 jenkins. qa.ubuntu. com/job/ unity8- utopic- i386-ci/ 1366 jenkins. qa.ubuntu. com/job/ generic- deb-autopilot- runner- mako/4482 jenkins. qa.ubuntu. com/job/ generic- mediumtests- builder- utopic- armhf/5961 jenkins. qa.ubuntu. com/job/ generic- mediumtests- builder- utopic- armhf/5961/ artifact/ work/output/ *zip*/output. zip s-jenkins. ubuntu- ci:8080/ job/touch- flash-device/ 13044
http://
Executed test runs:
UNSTABLE: http://
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild: s-jenkins. ubuntu- ci:8080/ job/unity8- ci/4272/ rebuild
http://