From 81c175bd93dc65ba75ca50b9bfd331c0c439297b Mon Sep 17 00:00:00 2001 From: SGCMarkus Date: Sat, 26 Mar 2022 23:27:49 +0100 Subject: [PATCH] sm7325-common: gps: update to LA.UM.9.12.r1-13500.01-SMxx50.QSSI12.0 --- gps/Android.bp | 12 +++ gps/Android.mk | 5 +- gps/android/1.0/Android.mk | 4 +- gps/android/1.1/Android.mk | 4 +- gps/android/2.0/Android.mk | 4 +- gps/android/2.1/AGnss.cpp | 21 ++--- gps/android/2.1/AGnss.h | 2 - gps/android/2.1/Android.mk | 3 +- gps/android/utils/Android.bp | 2 +- gps/batching/Android.bp | 2 +- gps/batching/BatchingAdapter.cpp | 8 +- gps/core/Android.bp | 2 +- gps/core/SystemStatus.cpp | 3 +- gps/core/SystemStatus.h | 6 +- gps/etc/seccomp_policy/gnss@2.0-base.policy | 24 ----- .../gnss@2.0-xtwifi-client.policy | 30 +----- .../gnss@2.0-xtwifi-inet-agent.policy | 10 -- gps/geofence/Android.bp | 2 +- gps/geofence/GeofenceAdapter.cpp | 8 +- gps/gnss/Agps.cpp | 4 +- gps/gnss/Agps.h | 2 +- gps/gnss/Android.bp | 2 +- gps/gnss/GnssAdapter.cpp | 94 ++++--------------- gps/gnss/GnssAdapter.h | 5 +- gps/gnss/location_gnss.cpp | 2 +- gps/gps_vendor_product.mk | 6 +- gps/location/Android.bp | 2 +- gps/utils/Android.bp | 2 +- 28 files changed, 70 insertions(+), 201 deletions(-) diff --git a/gps/Android.bp b/gps/Android.bp index 0681f67..ea0d991 100644 --- a/gps/Android.bp +++ b/gps/Android.bp @@ -16,6 +16,18 @@ GNSS_CFLAGS = [ "-Wno-error=date-time", ] +/* Activate the following for regression testing */ +GNSS_SANITIZE = { +/* address: true,*/ + cfi: true, + misc_undefined: [ + "bounds", + "null", + "unreachable", + "integer", + ], +} + /* Activate the following for debug purposes only, comment out for production */ GNSS_SANITIZE_DIAG = { diff --git a/gps/Android.mk b/gps/Android.mk index 88bb0f4..77d61c9 100644 --- a/gps/Android.mk +++ b/gps/Android.mk @@ -36,6 +36,9 @@ endif LOCAL_PATH := $(call my-dir) include $(call all-makefiles-under,$(LOCAL_PATH)) -GNSS_SANITIZE_DIAG := cfi bounds null unreachable integer address +GNSS_SANITIZE := cfi bounds null unreachable integer +# Activate the following two lines for regression testing +#GNSS_SANITIZE += address +#GNSS_SANITIZE_DIAG := $(GNSS_SANITIZE) endif # ifneq ($(BOARD_VENDOR_QCOM_GPS_LOC_API_HARDWARE),) diff --git a/gps/android/1.0/Android.mk b/gps/android/1.0/Android.mk index f63a948..797ecce 100644 --- a/gps/android/1.0/Android.mk +++ b/gps/android/1.0/Android.mk @@ -2,7 +2,7 @@ LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := android.hardware.gnss@1.0-impl-qti - +LOCAL_SANITIZE += $(GNSS_SANITIZE) # activate the following line for debug purposes only, comment out for production #LOCAL_SANITIZE_DIAG += $(GNSS_SANITIZE_DIAG) LOCAL_VENDOR_MODULE := true @@ -58,7 +58,7 @@ include $(BUILD_SHARED_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := android.hardware.gnss@1.0-service-qti - +LOCAL_SANITIZE += $(GNSS_SANITIZE) # activate the following line for debug purposes only, comment out for production #LOCAL_SANITIZE_DIAG += $(GNSS_SANITIZE_DIAG) LOCAL_VINTF_FRAGMENTS := android.hardware.gnss@1.0-service-qti.xml diff --git a/gps/android/1.1/Android.mk b/gps/android/1.1/Android.mk index edf8547..66abd06 100644 --- a/gps/android/1.1/Android.mk +++ b/gps/android/1.1/Android.mk @@ -2,7 +2,7 @@ LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := android.hardware.gnss@1.1-impl-qti - +LOCAL_SANITIZE += $(GNSS_SANITIZE) # activate the following line for debug purposes only, comment out for production #LOCAL_SANITIZE_DIAG += $(GNSS_SANITIZE_DIAG) LOCAL_VENDOR_MODULE := true @@ -59,7 +59,7 @@ include $(BUILD_SHARED_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := android.hardware.gnss@1.1-service-qti - +LOCAL_SANITIZE += $(GNSS_SANITIZE) # activate the following line for debug purposes only, comment out for production #LOCAL_SANITIZE_DIAG += $(GNSS_SANITIZE_DIAG) LOCAL_VINTF_FRAGMENTS := android.hardware.gnss@1.1-service-qti.xml diff --git a/gps/android/2.0/Android.mk b/gps/android/2.0/Android.mk index e3422f9..c0b91ae 100644 --- a/gps/android/2.0/Android.mk +++ b/gps/android/2.0/Android.mk @@ -2,7 +2,7 @@ LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := android.hardware.gnss@2.0-impl-qti - +LOCAL_SANITIZE += $(GNSS_SANITIZE) # activate the following line for debug purposes only, comment out for production #LOCAL_SANITIZE_DIAG += $(GNSS_SANITIZE_DIAG) LOCAL_VENDOR_MODULE := true @@ -71,7 +71,7 @@ include $(BUILD_SHARED_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := android.hardware.gnss@2.0-service-qti - +LOCAL_SANITIZE += $(GNSS_SANITIZE) # activate the following line for debug purposes only, comment out for production #LOCAL_SANITIZE_DIAG += $(GNSS_SANITIZE_DIAG) LOCAL_VINTF_FRAGMENTS := android.hardware.gnss@2.0-service-qti.xml diff --git a/gps/android/2.1/AGnss.cpp b/gps/android/2.1/AGnss.cpp index ce7b3aa..c759492 100644 --- a/gps/android/2.1/AGnss.cpp +++ b/gps/android/2.1/AGnss.cpp @@ -32,7 +32,7 @@ namespace implementation { static AGnss* spAGnss = nullptr; -AGnss::AGnss(Gnss* gnss) : mGnss(gnss), mType(LOC_AGPS_TYPE_INVALID) { +AGnss::AGnss(Gnss* gnss) : mGnss(gnss) { spAGnss = this; } @@ -51,9 +51,6 @@ void AGnss::statusCb(AGpsExtType type, LocAGpsStatusValue status) { V2_0::IAGnssCallback::AGnssType aType; IAGnssCallback::AGnssStatusValue aStatus; - // cache the AGps Type - mType = type; - switch (type) { case LOC_AGPS_TYPE_SUPL: aType = IAGnssCallback::AGnssType::SUPL; @@ -141,20 +138,18 @@ Return AGnss::dataConnFailed() { Return AGnss::dataConnOpen(uint64_t /*networkHandle*/, const hidl_string& apn, V2_0::IAGnss::ApnIpType apnIpType) { - if (mGnss == nullptr || mGnss->getGnssInterface() == nullptr){ + if(mGnss == nullptr || mGnss->getGnssInterface() == nullptr){ LOC_LOGE("Null GNSS interface"); return false; } - std::string apnString(apn.c_str()); - // During Emergency SUPL, an apn name of "sos" means that no - // apn was found, like in the simless case, so apn is cleared - if (LOC_AGPS_TYPE_SUPL_ES == mType && "sos" == apnString) { - LOC_LOGD("dataConnOpen APN name = [sos] cleared"); - apnString.clear(); + /* Validate */ + if(apn.empty()){ + LOC_LOGE("Invalid APN"); + return false; } - LOC_LOGD("dataConnOpen APN name = [%s]", apnString.c_str()); + LOC_LOGD("dataConnOpen APN name = [%s]", apn.c_str()); AGpsBearerType bearerType; switch (apnIpType) { @@ -173,7 +168,7 @@ Return AGnss::dataConnOpen(uint64_t /*networkHandle*/, const hidl_string& } mGnss->getGnssInterface()->agpsDataConnOpen( - LOC_AGPS_TYPE_SUPL, apnString.c_str(), apnString.size(), (int)bearerType); + LOC_AGPS_TYPE_SUPL, apn.c_str(), apn.size(), (int)bearerType); return true; } diff --git a/gps/android/2.1/AGnss.h b/gps/android/2.1/AGnss.h index cf9c8a7..f6ea997 100644 --- a/gps/android/2.1/AGnss.h +++ b/gps/android/2.1/AGnss.h @@ -67,8 +67,6 @@ struct AGnss : public V2_0::IAGnss { private: Gnss* mGnss = nullptr; sp mAGnssCbIface = nullptr; - - AGpsExtType mType; }; } // namespace implementation diff --git a/gps/android/2.1/Android.mk b/gps/android/2.1/Android.mk index 4be97a9..a947e41 100644 --- a/gps/android/2.1/Android.mk +++ b/gps/android/2.1/Android.mk @@ -2,6 +2,7 @@ LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := android.hardware.gnss@2.1-impl-qti +LOCAL_SANITIZE += $(GNSS_SANITIZE) # activate the following line for debug purposes only, comment out for production #LOCAL_SANITIZE_DIAG += $(GNSS_SANITIZE_DIAG) LOCAL_VENDOR_MODULE := true @@ -73,7 +74,7 @@ include $(BUILD_SHARED_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := android.hardware.gnss@2.1-service-qti - +LOCAL_SANITIZE += $(GNSS_SANITIZE) # activate the following line for debug purposes only, comment out for production #LOCAL_SANITIZE_DIAG += $(GNSS_SANITIZE_DIAG) LOCAL_VINTF_FRAGMENTS := android.hardware.gnss@2.1-service-qti.xml diff --git a/gps/android/utils/Android.bp b/gps/android/utils/Android.bp index 20fea88..c3dc17a 100644 --- a/gps/android/utils/Android.bp +++ b/gps/android/utils/Android.bp @@ -3,7 +3,7 @@ cc_library_static { name: "liblocbatterylistener", vendor: true, - + sanitize: GNSS_SANITIZE, cflags: GNSS_CFLAGS + ["-DBATTERY_LISTENER_ENABLED"], local_include_dirs: ["."], diff --git a/gps/batching/Android.bp b/gps/batching/Android.bp index ce794d1..9182a0a 100644 --- a/gps/batching/Android.bp +++ b/gps/batching/Android.bp @@ -4,7 +4,7 @@ cc_library_shared { name: "libbatching", vendor: true, - + sanitize: GNSS_SANITIZE, shared_libs: [ "libutils", diff --git a/gps/batching/BatchingAdapter.cpp b/gps/batching/BatchingAdapter.cpp index 4f1a43c..d9f7945 100644 --- a/gps/batching/BatchingAdapter.cpp +++ b/gps/batching/BatchingAdapter.cpp @@ -37,9 +37,7 @@ using namespace loc_core; BatchingAdapter::BatchingAdapter() : - LocAdapterBase(0, - LocContext::getLocContext(LocContext::mLocationHalName), - false, nullptr, true), + LocAdapterBase(0, LocContext::getLocContext(LocContext::mLocationHalName)), mOngoingTripDistance(0), mOngoingTripTBFInterval(0), mTripWithOngoingTBFDropped(false), @@ -52,10 +50,6 @@ BatchingAdapter::BatchingAdapter() : LOC_LOGD("%s]: Constructor", __func__); readConfigCommand(); setConfigCommand(); - - // at last step, let us inform adapater base that we are done - // with initialization, e.g.: ready to process handleEngineUpEvent - doneInit(); } void diff --git a/gps/core/Android.bp b/gps/core/Android.bp index fe9f067..ee8e807 100644 --- a/gps/core/Android.bp +++ b/gps/core/Android.bp @@ -4,7 +4,7 @@ cc_library_shared { name: "libloc_core", vendor: true, - + sanitize: GNSS_SANITIZE, shared_libs: [ "liblog", diff --git a/gps/core/SystemStatus.cpp b/gps/core/SystemStatus.cpp index fe11de0..d792577 100644 --- a/gps/core/SystemStatus.cpp +++ b/gps/core/SystemStatus.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2017-2021, The Linux Foundation. All rights reserved. +/* Copyright (c) 2017-2020, The Linux Foundation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are @@ -1586,7 +1586,6 @@ bool SystemStatus::eventDataItemNotify(IDataItemCore* dataitem) break; } pthread_mutex_unlock(&mMutexSystemStatus); - LOC_LOGv("DataItemId: %d, whether to record dateitem in cache: %d", dataitem->getId(), ret); return ret; } diff --git a/gps/core/SystemStatus.h b/gps/core/SystemStatus.h index bd4279e..097e7cc 100644 --- a/gps/core/SystemStatus.h +++ b/gps/core/SystemStatus.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017-2021, The Linux Foundation. All rights reserved. +/* Copyright (c) 2017-2020, The Linux Foundation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are @@ -509,11 +509,9 @@ public: for (uint8_t i = 0; rtv && i < MAX_NETWORK_HANDLES; ++i) { rtv &= (mAllNetworkHandles[i] == peer.mAllNetworkHandles[i]); } - return rtv & peer.mApn.compare(mApn); + return peer.mApn.compare(mApn); } inline virtual SystemStatusItemBase& collate(SystemStatusItemBase& curInfo) { - LOC_LOGv("NetworkInfo: mAllTypes=%" PRIx64 " connected=%u mType=%x mApn=%s", - mAllTypes, mConnected, mType, mApn.c_str()); uint64_t allTypes = (static_cast(curInfo)).mAllTypes; string& apn = (static_cast(curInfo)).mApn; // Replace current with cached table for now and then update diff --git a/gps/etc/seccomp_policy/gnss@2.0-base.policy b/gps/etc/seccomp_policy/gnss@2.0-base.policy index 0a2e17b..7b93037 100644 --- a/gps/etc/seccomp_policy/gnss@2.0-base.policy +++ b/gps/etc/seccomp_policy/gnss@2.0-base.policy @@ -93,27 +93,3 @@ sendmsg: 1 sendto: 1 recvfrom: 1 -getsockname: 1 -nanosleep: 1 -clone: 1 -setsockopt: 1 -getsockopt: 1 -madvise: 1 - -getitimer: 1 -setitimer: 1 -getpid: 1 -bind: 1 -listen: 1 -getpeername: 1 -socketpair: 1 -wait4: 1 -chown: 1 -fchown: 1 -lchown: 1 -umask: 1 -mmap2: 1 -fstat64: 1 -fstatat64: 1 -_llseek: 1 -geteuid: 1 diff --git a/gps/etc/seccomp_policy/gnss@2.0-xtwifi-client.policy b/gps/etc/seccomp_policy/gnss@2.0-xtwifi-client.policy index 38a41f9..17df31a 100644 --- a/gps/etc/seccomp_policy/gnss@2.0-xtwifi-client.policy +++ b/gps/etc/seccomp_policy/gnss@2.0-xtwifi-client.policy @@ -32,7 +32,7 @@ fdatasync: 1 getdents64: 1 gettimeofday: 1 -ioctl: 1 +#ioctl: arg1 == _IOC(_IOC_NONE || arg1 == _IOC(_IOC_READ || arg1 == VSOC_MAYBE_SEND_INTERRUPT_TO_HOST lseek: 1 madvise: 1 mkdirat: 1 @@ -43,31 +43,3 @@ timerfd_settime: 1 epoll_create1: 1 epoll_pwait: 1 epoll_ctl: 1 - -sched_getaffinity: 1 -gettid: 1 -fchown: 1 -fchmod: 1 -fchmodat: 1 -getsockopt: 1 -fchownat: 1 -fstat: 1 -fstatfs: 1 -newfstatat: 1 -sendmsg: 1 -recvmsg: 1 -gettimeofday: 1 -setsockopt: 1 -rt_tgsigqueueinfo: 1 -ioctl: 1 -mmap: 1 -getuid32: 1 -getuid: 1 -fstat64: 1 -fstatat64: 1 -mkdir: 1 -rmdir: 1 -creat: 1 -chmod: 1 -lseek: 1 -geteuid32: 1 diff --git a/gps/etc/seccomp_policy/gnss@2.0-xtwifi-inet-agent.policy b/gps/etc/seccomp_policy/gnss@2.0-xtwifi-inet-agent.policy index 024600a..00df6c7 100644 --- a/gps/etc/seccomp_policy/gnss@2.0-xtwifi-inet-agent.policy +++ b/gps/etc/seccomp_policy/gnss@2.0-xtwifi-inet-agent.policy @@ -31,13 +31,3 @@ unlinkat: 1 sched_getaffinity: 1 -newfstatat: 1 -fchmodat: 1 -madvise: 1 -mmap: 1 -getuid: 1 -getuid32: 1 -fstat64: 1 -fstatat64: 1 -gettimeofday: 1 -getdents64: 1 diff --git a/gps/geofence/Android.bp b/gps/geofence/Android.bp index bf8474f..4801eb8 100644 --- a/gps/geofence/Android.bp +++ b/gps/geofence/Android.bp @@ -5,7 +5,7 @@ cc_library_shared { name: "libgeofencing", vendor: true, - + sanitize: GNSS_SANITIZE, srcs: [ "GeofenceAdapter.cpp", diff --git a/gps/geofence/GeofenceAdapter.cpp b/gps/geofence/GeofenceAdapter.cpp index 1aeea0a..f024e3f 100644 --- a/gps/geofence/GeofenceAdapter.cpp +++ b/gps/geofence/GeofenceAdapter.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2013-2021, The Linux Foundation. All rights reserved. +/* Copyright (c) 2013-2020, The Linux Foundation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are @@ -38,13 +38,9 @@ using namespace loc_core; GeofenceAdapter::GeofenceAdapter() : LocAdapterBase(0, LocContext::getLocContext(LocContext::mLocationHalName), - true /*isMaster*/, nullptr, true) + true /*isMaster*/) { LOC_LOGD("%s]: Constructor", __func__); - - // at last step, let us inform adapater base that we are done - // with initialization, e.g.: ready to process handleEngineUpEvent - doneInit(); } void diff --git a/gps/gnss/Agps.cpp b/gps/gnss/Agps.cpp index 0b95f99..9255f88 100644 --- a/gps/gnss/Agps.cpp +++ b/gps/gnss/Agps.cpp @@ -448,7 +448,7 @@ void AgpsStateMachine::setAPN(char* apn, unsigned int len){ mAPN = NULL; } - if (NULL == apn || len > MAX_APN_LEN || strlen(apn) != len) { + if (NULL == apn || len <= 0 || len > MAX_APN_LEN || strlen(apn) != len) { LOC_LOGD("Invalid apn len (%d) or null apn", len); mAPN = NULL; mAPNLen = 0; @@ -590,7 +590,7 @@ void AgpsManager::requestATL(int connHandle, AGpsExtType agpsType, sm->setApnTypeMask(apnTypeMask); /* Invoke AGPS SM processing */ - AgpsSubscriber subscriber(connHandle, true, false, apnTypeMask); + AgpsSubscriber subscriber(connHandle, false, false, apnTypeMask); sm->setCurrentSubscriber(&subscriber); /* Send subscriber event */ sm->processAgpsEvent(AGPS_EVENT_SUBSCRIBE); diff --git a/gps/gnss/Agps.h b/gps/gnss/Agps.h index 8a27cd9..6b43bf5 100644 --- a/gps/gnss/Agps.h +++ b/gps/gnss/Agps.h @@ -167,7 +167,7 @@ public: /* Getter/Setter methods */ void setAPN(char* apn, unsigned int len); - inline char* getAPN() const { return mAPN; } + inline char* getAPN() const { return (char*)mAPN; } inline uint32_t getAPNLen() const { return mAPNLen; } inline void setBearer(AGpsBearerType bearer) { mBearer = bearer; } inline LocApnTypeMask getApnTypeMask() const { return mApnTypeMask; } diff --git a/gps/gnss/Android.bp b/gps/gnss/Android.bp index 736ea81..a3e8de9 100644 --- a/gps/gnss/Android.bp +++ b/gps/gnss/Android.bp @@ -5,7 +5,7 @@ cc_library_shared { name: "libgnss", vendor: true, - + sanitize: GNSS_SANITIZE, shared_libs: [ "libutils", diff --git a/gps/gnss/GnssAdapter.cpp b/gps/gnss/GnssAdapter.cpp index f3ccd99..6312f9b 100644 --- a/gps/gnss/GnssAdapter.cpp +++ b/gps/gnss/GnssAdapter.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2017-2021 The Linux Foundation. All rights reserved. +/* Copyright (c) 2017-2020 The Linux Foundation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are @@ -77,8 +77,6 @@ static void agpsCloseResultCb (bool isSuccess, AGpsExtType agpsType, void* userD typedef const CdfwInterface* (*getCdfwInterface)(); -typedef void getPdnTypeFromWds(const std::string& apnName, std::function pdnCb); - inline bool GnssReportLoggerUtil::isLogEnabled() { return (mLogLatency != nullptr); } @@ -891,8 +889,6 @@ GnssAdapter::setConfig() ContextBase::mGps_conf.MO_SUPL_PORT, LOC_AGPS_MO_SUPL_SERVER); - std::string moServerUrl = getMoServerUrl(); - std::string serverUrl = getServerUrl(); // inject the configurations into modem loc_gps_cfg_s gpsConf = ContextBase::mGps_conf; loc_sap_cfg_s_type sapConf = ContextBase::mSap_conf; @@ -940,10 +936,8 @@ GnssAdapter::setConfig() gnssConfigRequested.blacklistedSvIds.assign(mBlacklistedSvIds.begin(), mBlacklistedSvIds.end()); mLocApi->sendMsg(new LocApiMsg( - [this, gpsConf, sapConf, oldMoServerUrl, moServerUrl, - serverUrl, gnssConfigRequested] () mutable { - gnssUpdateConfig(oldMoServerUrl, moServerUrl, serverUrl, - gnssConfigRequested, gnssConfigRequested); + [this, gpsConf, sapConf, oldMoServerUrl, gnssConfigRequested] () mutable { + gnssUpdateConfig(oldMoServerUrl, gnssConfigRequested, gnssConfigRequested); // set nmea mask type uint32_t mask = 0; @@ -1031,7 +1025,6 @@ GnssAdapter::setConfig() } std::vector GnssAdapter::gnssUpdateConfig(const std::string& oldMoServerUrl, - const std::string& moServerUrl, const std::string& serverUrl, GnssConfig& gnssConfigRequested, GnssConfig& gnssConfigNeedEngineUpdate, size_t count) { loc_gps_cfg_s gpsConf = ContextBase::mGps_conf; size_t index = 0; @@ -1041,6 +1034,9 @@ std::vector GnssAdapter::gnssUpdateConfig(const std::string& oldM errsList.insert(errsList.begin(), count, LOCATION_ERROR_SUCCESS); } + std::string serverUrl = getServerUrl(); + std::string moServerUrl = getMoServerUrl(); + int serverUrlLen = serverUrl.length(); int moServerUrlLen = moServerUrl.length(); @@ -1428,14 +1424,10 @@ GnssAdapter::gnssUpdateConfigCommand(const GnssConfig& config) adapter.reportResponse(countOfConfigs, errs.data(), ids.data()); }); - std::string moServerUrl = adapter.getMoServerUrl(); - std::string serverUrl = adapter.getServerUrl(); mApi.sendMsg(new LocApiMsg( [&adapter, gnssConfigRequested, gnssConfigNeedEngineUpdate, - moServerUrl, serverUrl, countOfConfigs, configCollectiveResponse, - errs] () mutable { + countOfConfigs, configCollectiveResponse, errs] () mutable { std::vector errsList = adapter.gnssUpdateConfig("", - moServerUrl, serverUrl, gnssConfigRequested, gnssConfigNeedEngineUpdate, countOfConfigs); configCollectiveResponse->returnToSender(errsList); @@ -5222,38 +5214,6 @@ bool GnssAdapter::releaseATL(int connHandle){ return true; } -void GnssAdapter::reportPdnTypeFromWds(int pdnType, AGpsExtType agpsType, std::string apnName, - AGpsBearerType bearerType) { - LOC_LOGd("pdnType from WDS QMI: %d, agpsType: %d, apnName: %s, bearerType: %d", - pdnType, agpsType, apnName.c_str(), bearerType); - - struct MsgReportAtlPdn : public LocMsg { - GnssAdapter& mAdapter; - int mPdnType; - AgpsManager* mAgpsManager; - AGpsExtType mAgpsType; - string mApnName; - AGpsBearerType mBearerType; - - inline MsgReportAtlPdn(GnssAdapter& adapter, int pdnType, - AgpsManager* agpsManager, AGpsExtType agpsType, - const string& apnName, AGpsBearerType bearerType) : - LocMsg(), mAgpsManager(agpsManager), mAgpsType(agpsType), - mApnName(apnName), mBearerType(bearerType), - mAdapter(adapter), mPdnType(pdnType) {} - inline virtual void proc() const { - mAgpsManager->reportAtlOpenSuccess(mAgpsType, - const_cast(mApnName.c_str()), - mApnName.length(), mPdnType<=0? mBearerType:mPdnType); - } - }; - - AGpsBearerType atlPdnType = (pdnType+1) & 3; // convert WDS QMI pdn type to AgpsBearerType - sendMsg(new MsgReportAtlPdn(*this, atlPdnType, &mAgpsManager, - agpsType, apnName, bearerType)); -} - - void GnssAdapter::dataConnOpenCommand( AGpsExtType agpsType, const char* apnName, int apnLen, AGpsBearerType bearerType){ @@ -5261,16 +5221,17 @@ void GnssAdapter::dataConnOpenCommand( LOC_LOGI("GnssAdapter::frameworkDataConnOpen"); struct AgpsMsgAtlOpenSuccess: public LocMsg { - GnssAdapter& mAdapter; + AgpsManager* mAgpsManager; AGpsExtType mAgpsType; char* mApnName; + int mApnLen; AGpsBearerType mBearerType; - inline AgpsMsgAtlOpenSuccess(GnssAdapter& adapter, AgpsManager* agpsManager, - AGpsExtType agpsType, const char* apnName, int apnLen, AGpsBearerType bearerType) : + inline AgpsMsgAtlOpenSuccess(AgpsManager* agpsManager, AGpsExtType agpsType, + const char* apnName, int apnLen, AGpsBearerType bearerType) : LocMsg(), mAgpsManager(agpsManager), mAgpsType(agpsType), mApnName( - new char[apnLen + 1]), mBearerType(bearerType), mAdapter(adapter) { + new char[apnLen + 1]), mApnLen(apnLen), mBearerType(bearerType) { LOC_LOGV("AgpsMsgAtlOpenSuccess"); if (mApnName == nullptr) { @@ -5288,36 +5249,19 @@ void GnssAdapter::dataConnOpenCommand( } inline virtual void proc() const { - LOC_LOGv("AgpsMsgAtlOpenSuccess::proc()"); - string apn(mApnName); - //Use QMI WDS API to query IP Protocol from modem profile - void* libHandle = nullptr; - getPdnTypeFromWds* getPdnTypeFunc = (getPdnTypeFromWds*)dlGetSymFromLib(libHandle, - #ifdef USE_GLIB - "libloc_api_wds.so", "_Z10getPdnTypeRKNSt7__cxx1112basic_string"\ - "IcSt11char_traitsIcESaIcEEESt8functionIFviEE"); - #else - "libloc_api_wds.so", "_Z10getPdnTypeRKNSt3__112basic_stringIcNS_11char_traits"\ - "IcEENS_9allocatorIcEEEENS_8functionIFviEEE"); - #endif - std::function wdsPdnTypeCb = std::bind(&GnssAdapter::reportPdnTypeFromWds, - &mAdapter, std::placeholders::_1, mAgpsType, apn, mBearerType); - if (getPdnTypeFunc != nullptr) { - LOC_LOGv("dlGetSymFromLib success"); - (*getPdnTypeFunc)(apn, wdsPdnTypeCb); - } else { - mAgpsManager->reportAtlOpenSuccess(mAgpsType, mApnName, apn.length(), mBearerType); - } + LOC_LOGV("AgpsMsgAtlOpenSuccess::proc()"); + mAgpsManager->reportAtlOpenSuccess(mAgpsType, mApnName, mApnLen, mBearerType); } }; // Added inital length checks for apnlen check to avoid security issues // In case of failure reporting the same - if (NULL == apnName || apnLen > MAX_APN_LEN || (strlen(apnName) != apnLen)) { + if (NULL == apnName || apnLen <= 0 || apnLen > MAX_APN_LEN || + (strlen(apnName) != (unsigned)apnLen)) { LOC_LOGe("%s]: incorrect apnlen length or incorrect apnName", __func__); mAgpsManager.reportAtlClosed(agpsType); } else { - sendMsg( new AgpsMsgAtlOpenSuccess(*this, + sendMsg( new AgpsMsgAtlOpenSuccess( &mAgpsManager, agpsType, apnName, apnLen, bearerType)); } } @@ -6787,9 +6731,7 @@ GnssAdapter::reportGnssAntennaInformation(const antennaInfoCb antennaInfoCallbac } gnssAntennaInformations.push_back(std::move(gnssAntennaInfo)); } - if (antennaInfoVectorSize > 0) { - antennaInfoCallback(gnssAntennaInformations); - } + antennaInfoCallback(gnssAntennaInformations); } /* ==== DGnss Usable Reporter ========================================================= */ diff --git a/gps/gnss/GnssAdapter.h b/gps/gnss/GnssAdapter.h index d7b4275..6b8d024 100644 --- a/gps/gnss/GnssAdapter.h +++ b/gps/gnss/GnssAdapter.h @@ -321,6 +321,7 @@ protected: void logLatencyInfo(); public: + GnssAdapter(); virtual inline ~GnssAdapter() { } @@ -408,8 +409,6 @@ public: void deleteAidingData(const GnssAidingData &data, uint32_t sessionId); void gnssUpdateXtraThrottleCommand(const bool enabled); std::vector gnssUpdateConfig(const std::string& oldMoServerUrl, - const std::string& moServerUrl, - const std::string& serverUrl, GnssConfig& gnssConfigRequested, GnssConfig& gnssConfigNeedEngineUpdate, size_t count = 0); @@ -526,8 +525,6 @@ public: ( const std::unordered_map &featureMap ); - void reportPdnTypeFromWds(int pdnType, AGpsExtType agpsType, std::string apnName, - AGpsBearerType bearerType); /* ======== UTILITIES ================================================================= */ bool needReportForGnssClient(const UlpLocation& ulpLocation, diff --git a/gps/gnss/location_gnss.cpp b/gps/gnss/location_gnss.cpp index 8f67369..0454a13 100644 --- a/gps/gnss/location_gnss.cpp +++ b/gps/gnss/location_gnss.cpp @@ -519,7 +519,7 @@ static uint32_t antennaInfoInit(const antennaInfoCb antennaInfoCallback) { static void antennaInfoClose() { if (NULL != gGnssAdapter) { return gGnssAdapter->antennaInfoCloseCommand(); - } + } } static uint32_t configRobustLocation(bool enable, bool enableForE911){ diff --git a/gps/gps_vendor_product.mk b/gps/gps_vendor_product.mk index 1bb2a5b..0e578e8 100644 --- a/gps/gps_vendor_product.mk +++ b/gps/gps_vendor_product.mk @@ -14,7 +14,7 @@ LOC_BOARD_PLATFORM_LIST += msmnile LOC_BOARD_PLATFORM_LIST += sdmshrike LOC_BOARD_PLATFORM_LIST += $(MSMSTEPPE) LOC_BOARD_PLATFORM_LIST += $(TRINKET) -LOC_BOARD_PLATFORM_LIST += lahaina +LOC_BOARD_PLATFORM_LIST += kona LOC_BOARD_PLATFORM_LIST += atoll LOC_BOARD_PLATFORM_LIST += lito LOC_BOARD_PLATFORM_LIST += bengal @@ -27,10 +27,6 @@ ifneq (,$(filter $(LOC_BOARD_PLATFORM_LIST),$(TARGET_BOARD_PLATFORM))) PRODUCT_PACKAGES += gps.conf PRODUCT_PACKAGES += flp.conf PRODUCT_PACKAGES += gnss_antenna_info.conf -PRODUCT_PACKAGES += gnss@2.0-base.policy -PRODUCT_PACKAGES += gnss@2.0-xtra-daemon.policy -PRODUCT_PACKAGES += gnss@2.0-xtwifi-client.policy -PRODUCT_PACKAGES += gnss@2.0-xtwifi-inet-agent.policy PRODUCT_PACKAGES += libloc_pla_headers PRODUCT_PACKAGES += liblocation_api_headers PRODUCT_PACKAGES += libgps.utils_headers diff --git a/gps/location/Android.bp b/gps/location/Android.bp index fb4af2d..8532a08 100644 --- a/gps/location/Android.bp +++ b/gps/location/Android.bp @@ -4,7 +4,7 @@ cc_library_shared { name: "liblocation_api", vendor: true, - + sanitize: GNSS_SANITIZE, shared_libs: [ "libutils", diff --git a/gps/utils/Android.bp b/gps/utils/Android.bp index 33d8440..7d43d57 100644 --- a/gps/utils/Android.bp +++ b/gps/utils/Android.bp @@ -4,7 +4,7 @@ cc_library_shared { name: "libgps.utils", vendor: true, - + sanitize: GNSS_SANITIZE, //# Libs shared_libs: [