apache / apache/cordova-plugin-device
iOS: deviceProperties method crashes when device is locked & data protection is set to "complete"
- Dominant language
- JavaScript
- Stars
- 394
- Forks
- 424
- PR merge metrics
- No merged PRs in 30d
Description
# Bug Report
There is no null checking when creating the dictionary in the deviceProperties method.
## Problem
On the Apple developer portal, if you set "data protection" to "complete" for your App ID, and then call this method while your device is locked (e.g., in response to a push notification) some of the properties will be null and result in a crash.
### What is expected to happen?
Null properties should not be inserted in to the dictionary, and the App should not crash.
### What does actually happen?
The App crashes in the background every time.
## Information
An easy way to reproduce this is to turn off your device, then turn it on, but do not enter your passcode to unlock the device. With your device in this state, send a push notification to your app that calls the deviceProperties method.
### Command or Code
### Environment, Platform, Device
This was first noticed on iOS 13
### Version information
## Checklist
- [x] I searched for existing GitHub issues
- [x] I updated all Cordova tooling to most recent version
- [x] I included all the necessary information above
Contributor guide
Research direction
Locate the iOS implementation of the deviceProperties method and inspect how its property dictionary is created when data protection is set to complete and the device is locked. Reproduce the background push-notification case, then verify that null properties are omitted and the app no longer crashes.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript, objective-c
- Domain
- mobile
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100