summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSanket Padawe <sanketpadawe@google.com>2017-06-21 00:02:14 +0000
committerandroid-build-merger <android-build-merger@google.com>2017-06-21 00:02:14 +0000
commitc4766a04fcc912b19df6553e373b6078e9826062 (patch)
treec21aed8c51f8e03a994817c70db08efb6a180f02
parentccb6d7fbf4581578cb67b046e556ba15381b764e (diff)
parent46e9ee36b69c86df6d9227a1a95bce1835905a23 (diff)
downloadandroid_hardware_ril-c4766a04fcc912b19df6553e373b6078e9826062.tar.gz
android_hardware_ril-c4766a04fcc912b19df6553e373b6078e9826062.tar.bz2
android_hardware_ril-c4766a04fcc912b19df6553e373b6078e9826062.zip
Handle empty apn string in setInitialAttachApn HIDL API.
am: 46e9ee36b6 Change-Id: I2b066c9874b0e1c42808739ad378905fec69ee6d
-rw-r--r--libril/ril_service.cpp31
1 files changed, 27 insertions, 4 deletions
diff --git a/libril/ril_service.cpp b/libril/ril_service.cpp
index a8bf9de..f67575b 100644
--- a/libril/ril_service.cpp
+++ b/libril/ril_service.cpp
@@ -1997,8 +1997,19 @@ Return<void> RadioImpl::setInitialAttachApn(int32_t serial, const DataProfileInf
if (s_vendorFunctions->version <= 14) {
RIL_InitialAttachApn iaa = {};
- if (!copyHidlStringToRil(&iaa.apn, dataProfileInfo.apn, pRI)) {
- return Void();
+ if (dataProfileInfo.apn.size() == 0) {
+ iaa.apn = (char *) calloc(1, sizeof(char));
+ if (iaa.apn == NULL) {
+ RLOGE("Memory allocation failed for request %s",
+ requestToString(pRI->pCI->requestNumber));
+ sendErrorResponse(pRI, RIL_E_NO_MEMORY);
+ return Void();
+ }
+ iaa.apn[0] = '\0';
+ } else {
+ if (!copyHidlStringToRil(&iaa.apn, dataProfileInfo.apn, pRI)) {
+ return Void();
+ }
}
const hidl_string &protocol =
@@ -2024,9 +2035,21 @@ Return<void> RadioImpl::setInitialAttachApn(int32_t serial, const DataProfileInf
} else {
RIL_InitialAttachApn_v15 iaa = {};
- if (!copyHidlStringToRil(&iaa.apn, dataProfileInfo.apn, pRI)) {
- return Void();
+ if (dataProfileInfo.apn.size() == 0) {
+ iaa.apn = (char *) calloc(1, sizeof(char));
+ if (iaa.apn == NULL) {
+ RLOGE("Memory allocation failed for request %s",
+ requestToString(pRI->pCI->requestNumber));
+ sendErrorResponse(pRI, RIL_E_NO_MEMORY);
+ return Void();
+ }
+ iaa.apn[0] = '\0';
+ } else {
+ if (!copyHidlStringToRil(&iaa.apn, dataProfileInfo.apn, pRI)) {
+ return Void();
+ }
}
+
if (!copyHidlStringToRil(&iaa.protocol, dataProfileInfo.protocol, pRI)) {
memsetAndFreeStrings(1, iaa.apn);
return Void();