apache / apache/cordova-plugin-device

iOS: deviceProperties method crashes when device is locked & data protection is set to "complete"

Open
#108 4 comments 6 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.