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:
@@ -2349,7 +2349,7 @@ load_gid1 (MMBaseSim *self,
|
|||||||
/* READ BINARY of EFgid1 */
|
/* READ BINARY of EFgid1 */
|
||||||
mm_base_modem_at_command (
|
mm_base_modem_at_command (
|
||||||
self->priv->modem,
|
self->priv->modem,
|
||||||
"+CRSM=176,28478,0,0,15",
|
"+CRSM=176,28478,0,0,0",
|
||||||
10,
|
10,
|
||||||
FALSE,
|
FALSE,
|
||||||
(GAsyncReadyCallback)load_gid1_command_ready,
|
(GAsyncReadyCallback)load_gid1_command_ready,
|
||||||
@@ -2364,7 +2364,7 @@ load_gid2 (MMBaseSim *self,
|
|||||||
/* READ BINARY of EFgid2 */
|
/* READ BINARY of EFgid2 */
|
||||||
mm_base_modem_at_command (
|
mm_base_modem_at_command (
|
||||||
self->priv->modem,
|
self->priv->modem,
|
||||||
"+CRSM=176,28479,0,0,15",
|
"+CRSM=176,28479,0,0,0",
|
||||||
10,
|
10,
|
||||||
FALSE,
|
FALSE,
|
||||||
(GAsyncReadyCallback)load_gid2_command_ready,
|
(GAsyncReadyCallback)load_gid2_command_ready,
|
||||||
|
Reference in New Issue
Block a user