diff options
author | Sanket Padawe <sanketpadawe@google.com> | 2017-06-21 00:02:14 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2017-06-21 00:02:14 +0000 |
commit | c4766a04fcc912b19df6553e373b6078e9826062 (patch) | |
tree | c21aed8c51f8e03a994817c70db08efb6a180f02 | |
parent | ccb6d7fbf4581578cb67b046e556ba15381b764e (diff) | |
parent | 46e9ee36b69c86df6d9227a1a95bce1835905a23 (diff) | |
download | android_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.cpp | 31 |
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(); |