From 90530a6e86001facba8a34541d2f038f24562cc3 Mon Sep 17 00:00:00 2001 From: Amit Mahajan Date: Tue, 1 Jul 2014 15:54:08 -0700 Subject: Changes to correctly process EAP-SIM req parameters in ril Change-Id: I393c18f878fe3e5efcd81543a9a38a4c353b6e03 --- include/telephony/ril.h | 6 ------ libril/ril.cpp | 42 ++++++++++++++++++++++++++++++++++++++++++ libril/ril_commands.h | 2 +- 3 files changed, 43 insertions(+), 7 deletions(-) diff --git a/include/telephony/ril.h b/include/telephony/ril.h index c0cfd09..7cb3496 100644 --- a/include/telephony/ril.h +++ b/include/telephony/ril.h @@ -4685,12 +4685,6 @@ typedef struct { NULL if no value. */ } RIL_SimAuthentication; -typedef struct { - int sw1; - int sw2; - char *simResponse; /* Response in Base64 format, see 3GPP TS 31.102 7.1.2 */ -} RIL_SimAuthenticationResponse; - #ifdef RIL_SHLIB struct RIL_Env { /** diff --git a/libril/ril.cpp b/libril/ril.cpp index bccc8d2..f526294 100644 --- a/libril/ril.cpp +++ b/libril/ril.cpp @@ -275,6 +275,7 @@ static void dispatchRilCdmaSmsWriteArgs(Parcel &p, RequestInfo *pRI); static void dispatchNVReadItem(Parcel &p, RequestInfo *pRI); static void dispatchNVWriteItem(Parcel &p, RequestInfo *pRI); static void dispatchUiccSubscripton(Parcel &p, RequestInfo *pRI); +static void dispatchSimAuthentication(Parcel &p, RequestInfo *pRI); static int responseInts(Parcel &p, void *response, size_t responselen); static int responseStrings(Parcel &p, void *response, size_t responselen); static int responseString(Parcel &p, void *response, size_t responselen); @@ -1835,6 +1836,47 @@ invalid: return; } +static void dispatchSimAuthentication(Parcel &p, RequestInfo *pRI) +{ + RIL_SimAuthentication pf; + int32_t t; + status_t status; + + memset(&pf, 0, sizeof(pf)); + + status = p.readInt32(&t); + pf.authContext = (int) t; + pf.authData = strdupReadString(p); + pf.aid = strdupReadString(p); + + startRequest; + appendPrintBuf("authContext=%s, authData=%s, aid=%s", pf.authContext, pf.authData, pf.aid); + closeRequest; + printRequest(pRI->token, pRI->pCI->requestNumber); + + if (status != NO_ERROR) { + goto invalid; + } + CALL_ONREQUEST(pRI->pCI->requestNumber, &pf, sizeof(pf), pRI, pRI->socket_id); + +#ifdef MEMSET_FREED + memsetString(pf.authData); + memsetString(pf.aid); +#endif + + free(pf.authData); + free(pf.aid); + +#ifdef MEMSET_FREED + memset(&pf, 0, sizeof(pf)); +#endif + + return; +invalid: + invalidCommandBlock(pRI); + return; +} + static int blockingWrite(int fd, const void *buffer, size_t len) { size_t writeOffset = 0; diff --git a/libril/ril_commands.h b/libril/ril_commands.h index d0affe7..dfcaf4f 100644 --- a/libril/ril_commands.h +++ b/libril/ril_commands.h @@ -139,6 +139,6 @@ {RIL_REQUEST_SET_UICC_SUBSCRIPTION, dispatchUiccSubscripton, responseVoid}, {RIL_REQUEST_ALLOW_DATA, dispatchInts, responseVoid}, {RIL_REQUEST_GET_HARDWARE_CONFIG, dispatchVoid, responseHardwareConfig}, - {RIL_REQUEST_SIM_AUTHENTICATION, dispatchString, responseString}, + {RIL_REQUEST_SIM_AUTHENTICATION, dispatchSimAuthentication, responseSIM_IO}, {RIL_REQUEST_GET_DC_RT_INFO, dispatchVoid, responseDcRtInfo}, {RIL_REQUEST_SET_DC_RT_INFO_RATE, dispatchInts, responseVoid}, -- cgit v1.2.3