summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAmit Mahajan <amitmahajan@google.com>2014-07-01 15:54:08 -0700
committerAmit Mahajan <amitmahajan@google.com>2014-07-18 17:11:09 +0000
commit90530a6e86001facba8a34541d2f038f24562cc3 (patch)
tree594754a5867b53d250296c0c6c0aa6d0ce5bf5e7
parent11f27940d5928f9e6cfb0784fcc1285fe2870702 (diff)
downloadandroid_hardware_ril-90530a6e86001facba8a34541d2f038f24562cc3.tar.gz
android_hardware_ril-90530a6e86001facba8a34541d2f038f24562cc3.tar.bz2
android_hardware_ril-90530a6e86001facba8a34541d2f038f24562cc3.zip
Changes to correctly process EAP-SIM req parameters in ril
Change-Id: I393c18f878fe3e5efcd81543a9a38a4c353b6e03
-rw-r--r--include/telephony/ril.h6
-rw-r--r--libril/ril.cpp42
-rw-r--r--libril/ril_commands.h2
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},