base-sim: fix length when reading GID1/GID2

We were attempting to read 15 bytes unconditionally, regardless of the
size of the EF_gid1 and EF_gid2 files.

This operation would succeed in some SIM cards even if the actual file
lengths are shorter:

  AT+CRSM=176,28478,0,0,15
  +CRSM: 144,0,"FFFF"
  OK

But the operation would fail in some other SIM cards due to the length
mismatch:

  AT+CRSM=176,28478,0,0,15
  +CRSM: 103,0
  OK

Using 0 as requested length instructs the modem to read the length
specified in the EF status information, which is also the same
approach we do in QMI and MBIM.

  AT+CRSM=176,28478,0,0,0
  +CRSM: 144,0,"FFFF"
  OK
This commit is contained in:
Aleksander Morgado
2022-11-03 23:31:53 +00:00
parent 4bb601dd2f
commit 823f3e7995

View File

@@ -2349,7 +2349,7 @@ load_gid1 (MMBaseSim *self,
/* READ BINARY of EFgid1 */
mm_base_modem_at_command (
self->priv->modem,
"+CRSM=176,28478,0,0,15",
"+CRSM=176,28478,0,0,0",
10,
FALSE,
(GAsyncReadyCallback)load_gid1_command_ready,
@@ -2364,7 +2364,7 @@ load_gid2 (MMBaseSim *self,
/* READ BINARY of EFgid2 */
mm_base_modem_at_command (
self->priv->modem,
"+CRSM=176,28479,0,0,15",
"+CRSM=176,28479,0,0,0",
10,
FALSE,
(GAsyncReadyCallback)load_gid2_command_ready,