summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOana Medvesan <medvesan.oana@gmail.com>2015-07-20 17:51:11 +0200
committerAndreas Schneider <asn@cryptomilk.org>2017-02-12 19:27:36 +0100
commitdab4f12a367d5be64dc8db959155e60e934d8e40 (patch)
treebcfa44cc8eac51bd573aee594d1765c34d338a9b
parenta520935803cb0c7c0cd55990f7644f8f1d62e182 (diff)
downloadandroid_hardware_samsung_slsi_exynos5430-dab4f12a367d5be64dc8db959155e60e934d8e40.tar.gz
android_hardware_samsung_slsi_exynos5430-dab4f12a367d5be64dc8db959155e60e934d8e40.tar.xz
android_hardware_samsung_slsi_exynos5430-dab4f12a367d5be64dc8db959155e60e934d8e40.zip
tbase-301B: add fixes for Android M, fix file permissions and some compilation errors
Signed-off-by: Oana Medvesan <medvesan.oana@gmail.com>
-rw-r--r--MobiCoreDriverLib/CleanSpec.mk61
-rw-r--r--MobiCoreDriverLib/MODULE_LICENSE_BSD0
-rw-r--r--mobicore/CleanSpec.mk61
-rw-r--r--mobicore/MODULE_LICENSE_BSD0
-rw-r--r--mobicore/MobiCoreDriverLib/Android.mk3
-rw-r--r--mobicore/MobiCoreDriverLib/ClientLib/ClientLib.cpp8
-rw-r--r--mobicore/MobiCoreDriverLib/ClientLib/GP/tee_client_api.cpp5
-rw-r--r--mobicore/MobiCoreDriverLib/Common/CSemaphore.cpp2
-rw-r--r--mobicore/MobiCoreDriverLib/Common/NOTICE2
-rw-r--r--mobicore/MobiCoreDriverLib/Common/NetlinkConnection.cpp4
-rw-r--r--mobicore/MobiCoreDriverLib/Daemon/Device/MobiCoreDevice.cpp4
-rw-r--r--mobicore/MobiCoreDriverLib/Daemon/FSD/FSD.cpp20
-rw-r--r--mobicore/MobiCoreDriverLib/Daemon/MobiCoreDriverDaemon.cpp4
-rw-r--r--mobicore/MobiCoreDriverLib/Daemon/Server/NetlinkServer.cpp2
-rw-r--r--mobicore/MobiCoreDriverLib/Kernel/CKMod.cpp1
-rw-r--r--mobicore/MobiCoreDriverLib/Kernel/Platforms/Generic/CMcKMod.cpp22
-rw-r--r--mobicore/MobiCoreDriverLib/NOTICE2
-rw-r--r--mobicore/MobiCoreDriverLib/Registry/PrivateRegistry.cpp14
-rw-r--r--mobicore/MobiCoreDriverLib/Registry/Registry.cpp6
-rw-r--r--mobicore/MobiCoreDriverLib/build.sh28
-rw-r--r--mobicore/MobiCoreDriverLib/buildTag.h4
-rw-r--r--mobicore/NOTICE30
-rw-r--r--mobicore/README4
-rw-r--r--mobicore/common/MobiCore/inc/mcVersionHelper.h2
-rw-r--r--mobicore/rootpa/Code/Android/app/NOTICE2
-rw-r--r--mobicore/rootpa/Code/Android/app/jni/CommonPAWrapper/NOTICE2
-rw-r--r--mobicore/rootpa/Code/Android/app/jni/McStub/NOTICE2
-rw-r--r--mobicore/rootpa/Code/Android/lib/NOTICE2
-rw-r--r--mobicore/rootpa/Code/Common/NOTICE2
29 files changed, 211 insertions, 88 deletions
diff --git a/MobiCoreDriverLib/CleanSpec.mk b/MobiCoreDriverLib/CleanSpec.mk
new file mode 100644
index 0000000..7dd6f6c
--- /dev/null
+++ b/MobiCoreDriverLib/CleanSpec.mk
@@ -0,0 +1,61 @@
+# Copyright (C) 2007 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# If you don't need to do a full clean build but would like to touch
+# a file or delete some intermediate files, add a clean step to the end
+# of the list. These steps will only be run once, if they haven't been
+# run before.
+#
+# E.g.:
+# $(call add-clean-step, touch -c external/sqlite/sqlite3.h)
+# $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libz_intermediates)
+#
+# Always use "touch -c" and "rm -f" or "rm -rf" to gracefully deal with
+# files that are missing or have been moved.
+#
+# Use $(PRODUCT_OUT) to get to the "out/target/product/blah/" directory.
+# Use $(OUT_DIR) to refer to the "out" directory.
+#
+# If you need to re-do something that's already mentioned, just copy
+# the command and add it to the bottom of the list. E.g., if a change
+# that you made last week required touching a file and a change you
+# made today requires touching the same file, just copy the old
+# touch step and add it to the end of the list.
+#
+# ************************************************
+# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
+# ************************************************
+
+# For example:
+#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/AndroidTests_intermediates)
+#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/core_intermediates)
+#$(call add-clean-step, find $(OUT_DIR) -type f -name "IGTalkSession*" -print0 | xargs -0 rm -f)
+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/*)
+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/EXECUTABLES/openssl_intermediates)
+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/EXECUTABLES/openssl_intermediates)
+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libcrypto_intermediates $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libssl_intermediates $(PRODUCT_OUT)/obj/EXECUTABLES/openssl_intermediates $(PRODUCT_OUT)/obj/EXECUTABLES/ssltest_intermediates)
+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libcrypto_intermediates $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libssl_intermediates $(PRODUCT_OUT)/obj/EXECUTABLES/openssl_intermediates $(PRODUCT_OUT)/obj/EXECUTABLES/ssltest_intermediates)
+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libcrypto_intermediates $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libssl_intermediates $(PRODUCT_OUT)/obj/EXECUTABLES/openssl_intermediates $(PRODUCT_OUT)/obj/EXECUTABLES/ssltest_intermediates)
+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libcrypto_intermediates $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libssl_intermediates $(PRODUCT_OUT)/obj/EXECUTABLES/openssl_intermediates $(PRODUCT_OUT)/obj/EXECUTABLES/ssltest_intermediates)
+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libcrypto_intermediates $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libssl_intermediates $(PRODUCT_OUT)/obj/EXECUTABLES/openssl_intermediates $(PRODUCT_OUT)/obj/EXECUTABLES/ssltest_intermediates)
+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libssl_intermediates)
+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libcrypto_intermediates)
+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libssl_static_intermediates)
+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libcrypto_static_intermediates)
+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/EXECUTABLES/*ssl*_intermediates $(PRODUCT_OUT)/obj/*/libssl_*intermediates $(PRODUCT_OUT)/obj/*/libcrypto_*intermediates)
+
+# ************************************************
+# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
+# ************************************************
diff --git a/MobiCoreDriverLib/MODULE_LICENSE_BSD b/MobiCoreDriverLib/MODULE_LICENSE_BSD
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/MobiCoreDriverLib/MODULE_LICENSE_BSD
diff --git a/mobicore/CleanSpec.mk b/mobicore/CleanSpec.mk
new file mode 100644
index 0000000..7dd6f6c
--- /dev/null
+++ b/mobicore/CleanSpec.mk
@@ -0,0 +1,61 @@
+# Copyright (C) 2007 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# If you don't need to do a full clean build but would like to touch
+# a file or delete some intermediate files, add a clean step to the end
+# of the list. These steps will only be run once, if they haven't been
+# run before.
+#
+# E.g.:
+# $(call add-clean-step, touch -c external/sqlite/sqlite3.h)
+# $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libz_intermediates)
+#
+# Always use "touch -c" and "rm -f" or "rm -rf" to gracefully deal with
+# files that are missing or have been moved.
+#
+# Use $(PRODUCT_OUT) to get to the "out/target/product/blah/" directory.
+# Use $(OUT_DIR) to refer to the "out" directory.
+#
+# If you need to re-do something that's already mentioned, just copy
+# the command and add it to the bottom of the list. E.g., if a change
+# that you made last week required touching a file and a change you
+# made today requires touching the same file, just copy the old
+# touch step and add it to the end of the list.
+#
+# ************************************************
+# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
+# ************************************************
+
+# For example:
+#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/AndroidTests_intermediates)
+#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/core_intermediates)
+#$(call add-clean-step, find $(OUT_DIR) -type f -name "IGTalkSession*" -print0 | xargs -0 rm -f)
+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/*)
+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/EXECUTABLES/openssl_intermediates)
+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/EXECUTABLES/openssl_intermediates)
+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libcrypto_intermediates $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libssl_intermediates $(PRODUCT_OUT)/obj/EXECUTABLES/openssl_intermediates $(PRODUCT_OUT)/obj/EXECUTABLES/ssltest_intermediates)
+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libcrypto_intermediates $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libssl_intermediates $(PRODUCT_OUT)/obj/EXECUTABLES/openssl_intermediates $(PRODUCT_OUT)/obj/EXECUTABLES/ssltest_intermediates)
+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libcrypto_intermediates $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libssl_intermediates $(PRODUCT_OUT)/obj/EXECUTABLES/openssl_intermediates $(PRODUCT_OUT)/obj/EXECUTABLES/ssltest_intermediates)
+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libcrypto_intermediates $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libssl_intermediates $(PRODUCT_OUT)/obj/EXECUTABLES/openssl_intermediates $(PRODUCT_OUT)/obj/EXECUTABLES/ssltest_intermediates)
+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libcrypto_intermediates $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libssl_intermediates $(PRODUCT_OUT)/obj/EXECUTABLES/openssl_intermediates $(PRODUCT_OUT)/obj/EXECUTABLES/ssltest_intermediates)
+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libssl_intermediates)
+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libcrypto_intermediates)
+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libssl_static_intermediates)
+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libcrypto_static_intermediates)
+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/EXECUTABLES/*ssl*_intermediates $(PRODUCT_OUT)/obj/*/libssl_*intermediates $(PRODUCT_OUT)/obj/*/libcrypto_*intermediates)
+
+# ************************************************
+# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
+# ************************************************
diff --git a/mobicore/MODULE_LICENSE_BSD b/mobicore/MODULE_LICENSE_BSD
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/mobicore/MODULE_LICENSE_BSD
diff --git a/mobicore/MobiCoreDriverLib/Android.mk b/mobicore/MobiCoreDriverLib/Android.mk
index fb8da31..ec78785 100644
--- a/mobicore/MobiCoreDriverLib/Android.mk
+++ b/mobicore/MobiCoreDriverLib/Android.mk
@@ -15,7 +15,6 @@ LOCAL_C_INCLUDES += $(GLOBAL_INCLUDES)
LOCAL_SHARED_LIBRARIES += $(GLOBAL_LIBRARIES)
LOCAL_CFLAGS := -fvisibility=hidden -fvisibility-inlines-hidden
-LOCAL_CFLAGS += -Wno-missing-field-initializers
LOCAL_CFLAGS += -include buildTag.h
LOCAL_CFLAGS += -DLOG_TAG=\"McClient\"
LOCAL_CFLAGS += -DTBASE_API_LEVEL=3
@@ -57,8 +56,6 @@ LOCAL_MODULE_TAGS := debug eng optional
LOCAL_CFLAGS += -include buildTag.h
LOCAL_CFLAGS += -DLOG_TAG=\"McDaemon\"
LOCAL_CFLAGS += -DTBASE_API_LEVEL=3
-#remove some warnings
-LOCAL_CFLAGS += -Wno-missing-field-initializers -Wno-format
LOCAL_C_INCLUDES += $(GLOBAL_INCLUDES)
LOCAL_SHARED_LIBRARIES += $(GLOBAL_LIBRARIES) libMcClient
diff --git a/mobicore/MobiCoreDriverLib/ClientLib/ClientLib.cpp b/mobicore/MobiCoreDriverLib/ClientLib/ClientLib.cpp
index 8776486..e7f4aae 100644
--- a/mobicore/MobiCoreDriverLib/ClientLib/ClientLib.cpp
+++ b/mobicore/MobiCoreDriverLib/ClientLib/ClientLib.cpp
@@ -1090,10 +1090,10 @@ __MC_CLIENT_LIB_API mcResult_t mcWaitNotification(
//------------------------------------------------------------------------------
__MC_CLIENT_LIB_API mcResult_t mcMallocWsm(
uint32_t deviceId,
- uint32_t align,
+ uint32_t /*align*/,
uint32_t len,
uint8_t **wsm,
- uint32_t wsmFlags)
+ uint32_t /*wsmFlags*/)
{
mcResult_t mcResult = MC_DRV_ERR_UNKNOWN;
#ifndef WIN32
@@ -1300,7 +1300,7 @@ __MC_CLIENT_LIB_API mcResult_t mcUnmap(
CHECK_NOT_NULL(mapInfo);
CHECK_NOT_NULL(buf);
if (mapInfo->sVirtualAddr == 0) {
- LOG_E("Invalid secure virtual address %u.", (uintptr_t)mapInfo->sVirtualAddr);
+ LOG_E("Invalid secure virtual address %lu.", (unsigned long)mapInfo->sVirtualAddr);
mcResult = MC_DRV_ERR_NULL_POINTER;
break;
}
@@ -1321,7 +1321,7 @@ __MC_CLIENT_LIB_API mcResult_t mcUnmap(
uint32_t handle = session->getBufHandle((uint32_t)mapInfo->sVirtualAddr, mapInfo->sVirtualLen);
if (handle == 0) {
- LOG_E("Unable to find internal handle for buffer %u.", (uintptr_t)mapInfo->sVirtualAddr);
+ LOG_E("Unable to find internal handle for buffer %lu.", (unsigned long)mapInfo->sVirtualAddr);
mcResult = MC_DRV_ERR_BLK_BUFF_NOT_FOUND;
break;
}
diff --git a/mobicore/MobiCoreDriverLib/ClientLib/GP/tee_client_api.cpp b/mobicore/MobiCoreDriverLib/ClientLib/GP/tee_client_api.cpp
index 45c5adf..0568935 100644
--- a/mobicore/MobiCoreDriverLib/ClientLib/GP/tee_client_api.cpp
+++ b/mobicore/MobiCoreDriverLib/ClientLib/GP/tee_client_api.cpp
@@ -34,6 +34,7 @@
#include "log.h"
#include "MobiCoreDriverApi.h"
#include "Mci/mcinq.h"
+#include <stdlib.h>
#include <sys/mman.h>
#include "GpTci.h"
#include "../Session.h"
@@ -345,7 +346,7 @@ static TEEC_Result _TEEC_UnwindOperation(
//TEEC_InitializeContext: TEEC_SUCCESS, Another error code from Table 4-2.
//MC_DRV_OK, MC_DRV_ERR_INVALID_OPERATION, MC_DRV_ERR_DAEMON_UNREACHABLE, MC_DRV_ERR_UNKNOWN_DEVICE, MC_DRV_ERR_INVALID_DEVICE_FILE
TEEC_Result TEEC_InitializeContext(
- const char *name,
+ const char */*name*/,
TEEC_Context *context)
{
LOG_I("== %s() ==============", __func__);
@@ -489,7 +490,7 @@ TEEC_Result TEEC_OpenSession (
TEEC_Session *session,
const TEEC_UUID *destination,
uint32_t connectionMethod,
- void *connectionData,
+ void */*connectionData*/,
TEEC_Operation *operation,
uint32_t *returnOrigin)
{
diff --git a/mobicore/MobiCoreDriverLib/Common/CSemaphore.cpp b/mobicore/MobiCoreDriverLib/Common/CSemaphore.cpp
index 23ef649..0362ab3 100644
--- a/mobicore/MobiCoreDriverLib/Common/CSemaphore.cpp
+++ b/mobicore/MobiCoreDriverLib/Common/CSemaphore.cpp
@@ -70,7 +70,7 @@ bool CSemaphore::wait(int sec)
int rc = 0;
struct timespec tm;
if (sec < 0)
- sec = LONG_MAX;
+ sec = INT_MAX;
clock_gettime(CLOCK_REALTIME, &tm);
tm.tv_sec += sec;
diff --git a/mobicore/MobiCoreDriverLib/Common/NOTICE b/mobicore/MobiCoreDriverLib/Common/NOTICE
index 627167a..4142ad8 100644
--- a/mobicore/MobiCoreDriverLib/Common/NOTICE
+++ b/mobicore/MobiCoreDriverLib/Common/NOTICE
@@ -27,4 +27,4 @@
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
+ */ \ No newline at end of file
diff --git a/mobicore/MobiCoreDriverLib/Common/NetlinkConnection.cpp b/mobicore/MobiCoreDriverLib/Common/NetlinkConnection.cpp
index 3e911d4..7a9347d 100644
--- a/mobicore/MobiCoreDriverLib/Common/NetlinkConnection.cpp
+++ b/mobicore/MobiCoreDriverLib/Common/NetlinkConnection.cpp
@@ -114,14 +114,12 @@ NetlinkConnection::~NetlinkConnection(
//------------------------------------------------------------------------------
bool NetlinkConnection::connect(
- const char *dest
+ const char */*dest*/
)
{
struct sockaddr_nl addr;
bool ret = false;
- assert(NULL != dest);
-
LOG_I("%s: Connecting to SEQ 0x%X", __FUNCTION__, MC_DAEMON_PID);
do {
if ((socketDescriptor = socket(PF_NETLINK, SOCK_DGRAM, MC_DAEMON_NETLINK)) < 0) {
diff --git a/mobicore/MobiCoreDriverLib/Daemon/Device/MobiCoreDevice.cpp b/mobicore/MobiCoreDriverLib/Daemon/Device/MobiCoreDevice.cpp
index 503496e..64b8e58 100644
--- a/mobicore/MobiCoreDriverLib/Daemon/Device/MobiCoreDevice.cpp
+++ b/mobicore/MobiCoreDriverLib/Daemon/Device/MobiCoreDevice.cpp
@@ -559,7 +559,7 @@ mcResult_t MobiCoreDevice::openSession(
mcResult_t MobiCoreDevice::checkLoad(
loadDataOpenSession_ptr pLoadDataOpenSession,
- mcDrvRspOpenSessionPayload_ptr pRspOpenSessionPayload)
+ mcDrvRspOpenSessionPayload_ptr /*pRspOpenSessionPayload*/)
{
do {
// Write MCP open message to buffer
@@ -907,7 +907,7 @@ mcResult_t MobiCoreDevice::getMobiCoreVersion(
}
//------------------------------------------------------------------------------
-mcResult_t MobiCoreDevice::loadToken(Connection *deviceConnection,
+mcResult_t MobiCoreDevice::loadToken(Connection */*deviceConnection*/,
loadTokenData_ptr pLoadTokenData)
{
do {
diff --git a/mobicore/MobiCoreDriverLib/Daemon/FSD/FSD.cpp b/mobicore/MobiCoreDriverLib/Daemon/FSD/FSD.cpp
index 046b98e..2cd26b1 100644
--- a/mobicore/MobiCoreDriverLib/Daemon/FSD/FSD.cpp
+++ b/mobicore/MobiCoreDriverLib/Daemon/FSD/FSD.cpp
@@ -72,7 +72,7 @@ void FSD::run(
void
)
{
- struct stat st = {0};
+ struct stat st;
mcResult_t ret;
string storage = getTbStoragePath();
const char* tbstpath = storage.c_str();
@@ -287,12 +287,11 @@ void FSD_CreateTaDirPath(
string storage,
STH_FSD_message_t *sth_request,
char *TAdirpath,
- size_t TAdirpathSize //sizeof(TAdirpathSize)
+ size_t /*TAdirpathSize*/
){
const char* tbstpath = storage.c_str();
size_t tbstpathSize = storage.length();
char tadirname[TEE_UUID_STRING_SIZE+1] = {0};
- assert (TAdirpathSize == tbstpathSize+1+TEE_UUID_STRING_SIZE+1);
FSD_CreateTaDirName(&sth_request->uuid,tadirname,sizeof(tadirname));
@@ -308,13 +307,12 @@ void FSD_CreateTaDirPath(
void FSD_CreateFilePath(
STH_FSD_message_t *sth_request,
char *Filepath,
- size_t FilepathSize, // sizeof(FilepathSize)
+ size_t /*FilepathSize*/,
char *TAdirpath,
size_t TAdirpathSize // sizeof(TAdirpath)
){
char filename[2*FILENAMESIZE+1] = {0};
- assert (FilepathSize == TAdirpathSize + 2*FILENAMESIZE+1);
FSD_HexFileName(sth_request->filename,filename,FILENAMESIZE,sizeof(filename));
strncpy(Filepath, TAdirpath, TAdirpathSize-1);
@@ -401,7 +399,7 @@ mcResult_t FSD::FSD_LookFile(void){
if (ferror(pFile))
{
- LOG_E("%s: Error reading file res is %d and errno is %s\n",__func__,res,strerror(errno));
+ LOG_E("%s: Error reading file res is %zu and errno is %s\n",__func__,res,strerror(errno));
fclose(pFile);
return TEEC_ERROR_ITEM_NOT_FOUND;
}
@@ -410,7 +408,7 @@ mcResult_t FSD::FSD_LookFile(void){
{
//File is shorter than expected
if (feof(pFile)) {
- LOG_I("%s: EOF reached: res is %d, payloadLen is %d\n",__func__,res, sth_request->payloadLen);
+ LOG_I("%s: EOF reached: res is %zu, payloadLen is %d\n",__func__,res, sth_request->payloadLen);
}
}
@@ -454,7 +452,7 @@ mcResult_t FSD::FSD_ReadFile(void){
if (ferror(pFile))
{
- LOG_E("%s: Error reading file res is %d and errno is %s\n",__func__,res,strerror(errno));
+ LOG_E("%s: Error reading file res is %zu and errno is %s\n",__func__,res,strerror(errno));
fclose(pFile);
return TEE_ERROR_CORRUPT_OBJECT;
}
@@ -463,7 +461,7 @@ mcResult_t FSD::FSD_ReadFile(void){
{
//File is shorter than expected
if (feof(pFile)) {
- LOG_I("%s: EOF reached: res is %d, payloadLen is %d\n",__func__,res, sth_request->payloadLen);
+ LOG_I("%s: EOF reached: res is %zu, payloadLen is %d\n",__func__,res, sth_request->payloadLen);
}
}
@@ -539,7 +537,7 @@ mcResult_t FSD::FSD_WriteFile(void){
if (ferror(pFile))
{
- LOG_E("%s: Error writing file res is %d and errno is %s\n",__func__,res,strerror(errno));
+ LOG_E("%s: Error writing file res is %zu and errno is %s\n",__func__,res,strerror(errno));
fclose(pFile);
if(remove(Filepath)==-1)
{
@@ -556,7 +554,7 @@ mcResult_t FSD::FSD_WriteFile(void){
res = fclose(pFile);
if ((int32_t) res < 0)
{
- LOG_E("%s: Error closing file res is %d and errno is %s\n",__func__,res,strerror(errno));
+ LOG_E("%s: Error closing file res is %zu and errno is %s\n",__func__,res,strerror(errno));
if(remove(Filepath)==-1)
{
LOG_E("%s: remove failed: %s\n",__func__, strerror(errno));
diff --git a/mobicore/MobiCoreDriverLib/Daemon/MobiCoreDriverDaemon.cpp b/mobicore/MobiCoreDriverLib/Daemon/MobiCoreDriverDaemon.cpp
index f3e0b72..7cd6079 100644
--- a/mobicore/MobiCoreDriverLib/Daemon/MobiCoreDriverDaemon.cpp
+++ b/mobicore/MobiCoreDriverLib/Daemon/MobiCoreDriverDaemon.cpp
@@ -163,7 +163,7 @@ void MobiCoreDriverDaemon::run(
}
//------------------------------------------------------------------------------
-bool MobiCoreDriverDaemon::checkPermission(Connection *connection)
+bool MobiCoreDriverDaemon::checkPermission(Connection */*connection*/)
{
#ifdef REGISTRY_CHECK_PERMISSIONS
struct ucred cred;
@@ -1267,7 +1267,7 @@ bool MobiCoreDriverDaemon::handleConnection(
*/
void printUsage(
- int argc,
+ int /*argc*/,
char *args[]
)
{
diff --git a/mobicore/MobiCoreDriverLib/Daemon/Server/NetlinkServer.cpp b/mobicore/MobiCoreDriverLib/Daemon/Server/NetlinkServer.cpp
index 0e88cce..46561a7 100644
--- a/mobicore/MobiCoreDriverLib/Daemon/Server/NetlinkServer.cpp
+++ b/mobicore/MobiCoreDriverLib/Daemon/Server/NetlinkServer.cpp
@@ -79,7 +79,7 @@ void NetlinkServer::run(
src_addr.nl_family = AF_NETLINK;
src_addr.nl_pid = MC_DAEMON_PID; /* daemon pid */
src_addr.nl_groups = 0; /* not in mcast groups */
- if (bind(serverSock, (struct sockaddr *)&src_addr, sizeof(src_addr)) < 0) {
+ if (::bind(serverSock, (struct sockaddr *)&src_addr, sizeof(src_addr)) < 0) {
LOG_ERRNO("Binding to server socket failed, because bind");
close(serverSock);
serverSock = -1;
diff --git a/mobicore/MobiCoreDriverLib/Kernel/CKMod.cpp b/mobicore/MobiCoreDriverLib/Kernel/CKMod.cpp
index 442656e..0394b68 100644
--- a/mobicore/MobiCoreDriverLib/Kernel/CKMod.cpp
+++ b/mobicore/MobiCoreDriverLib/Kernel/CKMod.cpp
@@ -37,6 +37,7 @@
#include <fcntl.h>
#include <sys/mman.h>
#include <errno.h>
+#include <string.h>
#include "CKMod.h"
diff --git a/mobicore/MobiCoreDriverLib/Kernel/Platforms/Generic/CMcKMod.cpp b/mobicore/MobiCoreDriverLib/Kernel/Platforms/Generic/CMcKMod.cpp
index 0e57874..392b193 100644
--- a/mobicore/MobiCoreDriverLib/Kernel/Platforms/Generic/CMcKMod.cpp
+++ b/mobicore/MobiCoreDriverLib/Kernel/Platforms/Generic/CMcKMod.cpp
@@ -65,8 +65,9 @@ mcResult_t CMcKMod::mapWsm(
}
// mapping response data is in the buffer
- struct mc_ioctl_map mapParams = { len : len };
+ struct mc_ioctl_map mapParams;
+ mapParams.len = len;
ret = ioctl(fdKMod, MC_IO_MAP_WSM, &mapParams);
if (ret != 0) {
LOG_ERRNO("ioctl MC_IO_MAP_WSM");
@@ -104,8 +105,9 @@ mcResult_t CMcKMod::mapMCI(
{
LOG_I("Mapping MCI: len=%d", len);
// mapping response data is in the buffer
- struct mc_ioctl_map mapParams = { len : len };
+ struct mc_ioctl_map mapParams;
+ mapParams.len = len;
if (!isOpen()) {
LOG_E("no connection to kmod");
return MC_DRV_ERR_KMOD_NOT_OPEN;
@@ -209,7 +211,9 @@ int CMcKMod::fcInfo(uint32_t extInfoId, uint32_t *pState, uint32_t *pExtInfo)
}
// Init MC with NQ and MCP buffer addresses
- struct mc_ioctl_info fcInfoParams = { ext_info_id : extInfoId };
+ struct mc_ioctl_info fcInfoParams;
+
+ fcInfoParams.ext_info_id = extInfoId;
ret = ioctl(fdKMod, MC_IO_INFO, &fcInfoParams);
if (ret != 0) {
LOG_ERRNO("ioctl MC_IO_INFO");
@@ -310,15 +314,11 @@ mcResult_t CMcKMod::registerWsmL2(
return MC_DRV_ERR_KMOD_NOT_OPEN;
}
- struct mc_ioctl_reg_wsm params = {
-buffer :
- (uintptr_t) buffer,
-len :
- len,
-pid :
- pid
- };
+ struct mc_ioctl_reg_wsm params;
+ params.buffer = (uintptr_t)buffer;
+ params.len = len;
+ params.pid = pid;
int ret = ioctl(fdKMod, MC_IO_REG_WSM, &params);
if (ret != 0) {
LOG_ERRNO("ioctl MC_IO_REG_WSM");
diff --git a/mobicore/MobiCoreDriverLib/NOTICE b/mobicore/MobiCoreDriverLib/NOTICE
index 627167a..4142ad8 100644
--- a/mobicore/MobiCoreDriverLib/NOTICE
+++ b/mobicore/MobiCoreDriverLib/NOTICE
@@ -27,4 +27,4 @@
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
+ */ \ No newline at end of file
diff --git a/mobicore/MobiCoreDriverLib/Registry/PrivateRegistry.cpp b/mobicore/MobiCoreDriverLib/Registry/PrivateRegistry.cpp
index f51571b..1dfb4d7 100644
--- a/mobicore/MobiCoreDriverLib/Registry/PrivateRegistry.cpp
+++ b/mobicore/MobiCoreDriverLib/Registry/PrivateRegistry.cpp
@@ -306,7 +306,7 @@ mcResult_t mcRegistryReadAuthToken(mcSoAuthTokenCont_t *so)
if ((unsigned)res<sizeof(mcSoAuthTokenCont_t)) {
//File is shorter than expected
if (feof(fs)) {
- LOG_E("%s(): EOF reached: res is %u, size of mcSoAuthTokenCont_t is %u", __func__, (unsigned)res,
+ LOG_E("%s(): EOF reached: res is %d, size of mcSoAuthTokenCont_t is %zu", __func__, res,
sizeof(mcSoAuthTokenCont_t));
}
fclose(fs);
@@ -362,8 +362,8 @@ mcResult_t mcRegistryReadAuthTokenBackup(mcSoAuthTokenCont_t *so)
if ((unsigned)res<sizeof(mcSoAuthTokenCont_t)) {
//File is shorter than expected
if (feof(fs)) {
- LOG_E("%s(): EOF reached: res is %u, size of mcSoAuthTokenCont_t is %u", __func__,
- (unsigned)res, sizeof(mcSoAuthTokenCont_t));
+ LOG_E("%s(): EOF reached: res is %d, size of mcSoAuthTokenCont_t is %zu", __func__,
+ res, sizeof(mcSoAuthTokenCont_t));
}
fclose(fs);
return MC_DRV_ERR_INVALID_PARAMETER;
@@ -622,7 +622,7 @@ mcResult_t mcRegistryStoreTABlob(mcSpid_t spid, void *blob, uint32_t size)
// Check attestation size
if (getAsUint32BE(&pUa->size) < sizeof(uuid_attestation)) {
- LOG_E("RegistryStoreTABlob failed - Attestation size is equal to %d and is less then %d", getAsUint32BE(&pUa->size), sizeof(uuid_attestation));
+ LOG_E("RegistryStoreTABlob failed - Attestation size is equal to %d and is less then %zu", getAsUint32BE(&pUa->size), sizeof(uuid_attestation));
return MC_DRV_ERR_TA_ATTESTATION_ERROR;
}
@@ -797,7 +797,7 @@ mcResult_t mcRegistryStoreData(void *so, uint32_t size)
//------------------------------------------------------------------------------
-mcResult_t mcRegistryReadData(uint32_t context, const mcCid_t *cid, mcPid_t pid,
+mcResult_t mcRegistryReadData(uint32_t context, const mcCid_t *cid, mcPid_t /*pid*/,
mcSoDataCont_t *so, uint32_t maxLen)
{
int res = 0;
@@ -854,7 +854,7 @@ mcResult_t mcRegistryReadData(uint32_t context, const mcCid_t *cid, mcPid_t pid,
if ((unsigned)res<sizeof(mcSoHeader_t)) {
//File is shorter than expected
if (feof(fs)) {
- LOG_E("%s(): EOF reached: res is %u, size of mcSoHeader_t is %u", __func__, (unsigned)res, sizeof(mcSoHeader_t));
+ LOG_E("%s(): EOF reached: res is %d, size of mcSoHeader_t is %zu", __func__, res, sizeof(mcSoHeader_t));
}
fclose(fs);
return MC_DRV_ERR_INVALID_PARAMETER;
@@ -871,7 +871,7 @@ mcResult_t mcRegistryReadData(uint32_t context, const mcCid_t *cid, mcPid_t pid,
if ((unsigned)res<(MC_SO_SIZE(so->soHeader.plainLen, so->soHeader.encryptedLen) - sizeof(mcSoHeader_t))) {
//File is shorter than expected
if (feof(fs)) {
- LOG_E("%s(): EOF reached: res is %u, size of secure object is %u", __func__, (unsigned)res,
+ LOG_E("%s(): EOF reached: res is %d, size of secure object is %zu", __func__, res,
MC_SO_SIZE(so->soHeader.plainLen, so->soHeader.encryptedLen) - sizeof(mcSoHeader_t));
}
fclose(fs);
diff --git a/mobicore/MobiCoreDriverLib/Registry/Registry.cpp b/mobicore/MobiCoreDriverLib/Registry/Registry.cpp
index 6f193fa..6c8bc62 100644
--- a/mobicore/MobiCoreDriverLib/Registry/Registry.cpp
+++ b/mobicore/MobiCoreDriverLib/Registry/Registry.cpp
@@ -381,15 +381,15 @@ mcResult_t mcRegistryCleanupTrustlet(const mcUuid_t *uuid, const mcSpid_t spid)
}
//------------------------------------------------------------------------------
-mcResult_t mcRegistryStoreData(void *so, uint32_t size)
+mcResult_t mcRegistryStoreData(void */*so*/, uint32_t /*size*/)
{
return MC_DRV_ERR_INVALID_PARAMETER;
}
//------------------------------------------------------------------------------
-mcResult_t mcRegistryReadData(uint32_t context, const mcCid_t *cid, mcPid_t pid,
- mcSoDataCont_t *so, uint32_t maxLen)
+mcResult_t mcRegistryReadData(uint32_t /*context*/, const mcCid_t */*cid*/, mcPid_t /*pid*/,
+ mcSoDataCont_t */*so*/, uint32_t /*maxLen*/)
{
return MC_DRV_ERR_INVALID_PARAMETER;
}
diff --git a/mobicore/MobiCoreDriverLib/build.sh b/mobicore/MobiCoreDriverLib/build.sh
deleted file mode 100644
index 55a1593..0000000
--- a/mobicore/MobiCoreDriverLib/build.sh
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/bash
-
-source ../../../../setup.sh
-if [ $? -ne 0 ]; then
- echo "Error: Could not source setup.sh!"
- exit 1
-fi
-
-ROOT_PATH=$(dirname $(readlink -f $BASH_SOURCE))
-
-###
-### Android NDK path
-###
-PLATFORM=Generic
-MODE=debug
-
-echo "Building <t-base Daemon..."
-
-# run NDK build
-${NDK_BUILD} \
- -B \
- NDK_DEBUG=1 \
- NDK_PROJECT_PATH=$ROOT_PATH \
- NDK_APPLICATION_MK=$ROOT_PATH/Application.mk \
- NDK_MODULE_PATH=. \
- NDK_APP_OUT=$ROOT_PATH/Out/_build \
- APP_BUILD_SCRIPT=$ROOT_PATH/Android.mk \
- APP_OPTIM=$MODE \ No newline at end of file
diff --git a/mobicore/MobiCoreDriverLib/buildTag.h b/mobicore/MobiCoreDriverLib/buildTag.h
index b1d9959..10fbb8f 100644
--- a/mobicore/MobiCoreDriverLib/buildTag.h
+++ b/mobicore/MobiCoreDriverLib/buildTag.h
@@ -28,6 +28,6 @@
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-/** Build tag created during build by /home/buildserver/jenkins/workspace/CI_Trunk_BuildAndTest_TestRun-Arndale/dev/components/MobiCoreDriver/Linux/Daemon/../../../../../build/tools/Scripts/setBuildTag.sh. */
+/** Build tag created during build by /data/buildserver/jenkins/workspace/CustomerPackage-QC-MSM8916-Branch-rel_t-base-301B-V001_qc/dev/components/MobiCoreDriver/Linux/Daemon/../../../../../build/tools/Scripts/setBuildTag.sh. */
#define MOBICORE_COMPONENT_BUILD_TAG \
- " t-base-Qualcomm-MSM8994-Android-301B-V001"
+ "t-base-QC-MSM8916-Android-301B-V003-36_36"
diff --git a/mobicore/NOTICE b/mobicore/NOTICE
new file mode 100644
index 0000000..4142ad8
--- /dev/null
+++ b/mobicore/NOTICE
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2013-2014 TRUSTONIC LIMITED
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * 3. Neither the name of the TRUSTONIC LIMITED nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */ \ No newline at end of file
diff --git a/mobicore/README b/mobicore/README
new file mode 100644
index 0000000..e16e41a
--- /dev/null
+++ b/mobicore/README
@@ -0,0 +1,4 @@
+Copy here specific files for your integration
+
+coming from :
+ package_template/AndroidIntegration/mobicore/Android.mk \ No newline at end of file
diff --git a/mobicore/common/MobiCore/inc/mcVersionHelper.h b/mobicore/common/MobiCore/inc/mcVersionHelper.h
index b4f9b5f..6fa706a 100644
--- a/mobicore/common/MobiCore/inc/mcVersionHelper.h
+++ b/mobicore/common/MobiCore/inc/mcVersionHelper.h
@@ -139,7 +139,7 @@
uint32_t major = MC_GET_MAJOR_VERSION(version); \
uint32_t minor = MC_GET_MINOR_VERSION(version); \
*errmsg = NULL; \
- if ((major == majorRequired) && (minor >= minorRequired)) { \
+ if ((major == majorRequired) && ((minor == minorRequired) || (minor > minorRequired))) { \
return 1; \
}; \
return 0; \
diff --git a/mobicore/rootpa/Code/Android/app/NOTICE b/mobicore/rootpa/Code/Android/app/NOTICE
index 627167a..4142ad8 100644
--- a/mobicore/rootpa/Code/Android/app/NOTICE
+++ b/mobicore/rootpa/Code/Android/app/NOTICE
@@ -27,4 +27,4 @@
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
+ */ \ No newline at end of file
diff --git a/mobicore/rootpa/Code/Android/app/jni/CommonPAWrapper/NOTICE b/mobicore/rootpa/Code/Android/app/jni/CommonPAWrapper/NOTICE
index 627167a..4142ad8 100644
--- a/mobicore/rootpa/Code/Android/app/jni/CommonPAWrapper/NOTICE
+++ b/mobicore/rootpa/Code/Android/app/jni/CommonPAWrapper/NOTICE
@@ -27,4 +27,4 @@
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
+ */ \ No newline at end of file
diff --git a/mobicore/rootpa/Code/Android/app/jni/McStub/NOTICE b/mobicore/rootpa/Code/Android/app/jni/McStub/NOTICE
index 627167a..4142ad8 100644
--- a/mobicore/rootpa/Code/Android/app/jni/McStub/NOTICE
+++ b/mobicore/rootpa/Code/Android/app/jni/McStub/NOTICE
@@ -27,4 +27,4 @@
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
+ */ \ No newline at end of file
diff --git a/mobicore/rootpa/Code/Android/lib/NOTICE b/mobicore/rootpa/Code/Android/lib/NOTICE
index 627167a..4142ad8 100644
--- a/mobicore/rootpa/Code/Android/lib/NOTICE
+++ b/mobicore/rootpa/Code/Android/lib/NOTICE
@@ -27,4 +27,4 @@
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
+ */ \ No newline at end of file
diff --git a/mobicore/rootpa/Code/Common/NOTICE b/mobicore/rootpa/Code/Common/NOTICE
index 627167a..4142ad8 100644
--- a/mobicore/rootpa/Code/Common/NOTICE
+++ b/mobicore/rootpa/Code/Common/NOTICE
@@ -27,4 +27,4 @@
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
+ */ \ No newline at end of file