Skip to content

Commit 5f31875

Browse files
author
Xavier Chapron
committed
README: Update Limitations section
1 parent 2348e2f commit 5f31875

File tree

1 file changed

+38
-7
lines changed

1 file changed

+38
-7
lines changed

README.md

Lines changed: 38 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,17 +33,48 @@ being merged to `master`:
3333

3434
## Limitations
3535

36-
The emulator handles only a few syscalls made by common apps; for instance,
36+
There is absolutely no guarantee that apps will have the same behavior on
37+
hardware devices and Speculos, though the differences are limited.
38+
39+
### Syscalls
40+
41+
The emulator handles only a few syscalls made by common apps. For instance,
3742
syscalls related to app install, firmware update or OS info can't be
3843
implemented.
3944

40-
There is absolutely no guarantee that apps will have the same behavior on
41-
hardware devices and Speculos:
45+
Invalid syscall parameters might throw an exception on a real device while
46+
being ignored on Speculos.
47+
Notably, this is the case for application allowed derivation path and curve and
48+
application settings flags which are enforced by the device OS, but ignored by
49+
Speculos.
50+
51+
### Memory alignment
52+
53+
Attempts to perform unaligned accesses when not allowed (eg. dereferencing a
54+
misaligned pointer) will cause an alignment fault on a Ledger Nano S device but
55+
not on Speculos. Note that such unaligned accesses are supported by other
56+
Ledger devices.
57+
58+
Following code crash on LNS device, but not on Speculos nor on other devices.
59+
```
60+
uint8_t buffer[20];
61+
for (int i = 0; i < 20; i++) {
62+
buffer[i] = i;
63+
}
64+
uint32_t display_value = *((uint32_t*) (buffer + 1));
65+
PRINTF("display_value: %d\n", display_value);
66+
```
67+
68+
### Watchdog
69+
70+
NanoX device use an internal watchdog enforcing usage of regular calls to
71+
`io_seproxyhal_io_heartbeat();`. This watchdog is not emulated on Speculos.
72+
73+
### Pending review screen
4274

43-
- Invalid syscall parameters might throw an exception on a real device while
44-
being ignored on Speculos.
45-
- Attempts to perform unaligned accesses when not allowed (eg. dereferencing a
46-
misaligned pointer) will cause an alignment fault on a hardware device.
75+
The C SDK offers a feature to display a warning screen upon app launch
76+
indicating that the app has not been reviewed.
77+
As the `_install_parameters` are not handled by Speculos, the screen won't be displayed.
4778

4879

4980
## Security

0 commit comments

Comments
 (0)