From 79d7e1cb1697c4b7b43d5f42d20e235a33e2b6f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dylan=20A=C3=AFssi?= <dylan.aissi@collabora.com> Date: Tue, 13 Feb 2024 10:08:13 +0100 Subject: [PATCH 1/3] Import Upstream version 4.0.0 --- .github/workflows/ci.yml | 51 ++++++++++++ Android.mk | 7 +- CMakeLists.txt | 36 +++++---- Makefile | 56 ++++++++------ ci/Dockerfile.debian | 21 +++++ ci/Dockerfile.ubuntu | 30 ++++++++ flags.mk | 9 ++- libckteec/CMakeLists.txt | 12 +-- libckteec/Makefile | 2 +- libckteec/include/CMakeLists.txt | 4 +- libckteec/include/pkcs11.h | 7 ++ libckteec/src/serialize_ck.c | 45 +++++++++++ libseteec/CMakeLists.txt | 12 +-- libseteec/Makefile | 2 +- libseteec/include/CMakeLists.txt | 4 +- libteeacl/Makefile | 12 ++- libteeacl/include/teeacl.h | 2 +- libteeacl/src/group.c | 3 +- libteec/CMakeLists.txt | 44 +++++++---- libteec/Makefile | 2 +- {public => libteec/include}/tee_bench.h | 0 {public => libteec/include}/tee_client_api.h | 0 .../include}/tee_client_api_extensions.h | 0 .../include}/tee_plugin_method.h | 0 {public => libteec/include}/teec_trace.h | 0 libteec/libteec.pc.in | 14 ++++ libteec/{include => src}/linux/tee.h | 0 libteec/src/tee_client_api.c | 4 +- libteec/src/teec_benchmark.c | 2 +- libteec/{include => src}/teec_benchmark.h | 0 public/CMakeLists.txt | 25 ------ tee-supplicant/CMakeLists.txt | 77 +++++++++---------- tee-supplicant/Makefile | 2 +- tee-supplicant/src/plugin.c | 7 +- tee-supplicant/src/tee_supp_fs.c | 17 +++- tee-supplicant/tee_supplicant_android.mk | 2 +- 36 files changed, 355 insertions(+), 156 deletions(-) create mode 100644 .github/workflows/ci.yml create mode 100644 ci/Dockerfile.debian create mode 100644 ci/Dockerfile.ubuntu rename {public => libteec/include}/tee_bench.h (100%) rename {public => libteec/include}/tee_client_api.h (100%) rename {public => libteec/include}/tee_client_api_extensions.h (100%) rename {public => libteec/include}/tee_plugin_method.h (100%) rename {public => libteec/include}/teec_trace.h (100%) create mode 100644 libteec/libteec.pc.in rename libteec/{include => src}/linux/tee.h (100%) rename libteec/{include => src}/teec_benchmark.h (100%) delete mode 100644 public/CMakeLists.txt diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..1297791 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,51 @@ +name: CI +on: [push, pull_request] +permissions: + contents: read # to fetch code (actions/checkout) +jobs: + debian: + name: build (Debian) + runs-on: ubuntu-latest + container: jforissier/optee_client_ci_debian + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: arm64 with make + run: make -j O=out-make-aarch64 CROSS_COMPILE=aarch64-linux-gnu- + - name: armhf with make + run: make -j O=out-make-armhf CROSS_COMPILE=arm-linux-gnueabihf- + - name: arm64 with cmake + run: | + set -e -v + mkdir out-cmake-aarch64 && cd out-cmake-aarch64 + PKG_CONFIG=aarch64-linux-gnu-pkg-config cmake .. -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc + make -j + - name: armhf with cmake + run: | + set -e -v + mkdir out-cmake-armhf && cd out-cmake-armhf + PKG_CONFIG=arm-linux-gnueabihf-pkg-config cmake .. -DCMAKE_C_COMPILER=arm-linux-gnueabihf-gcc + make -j + ubuntu: + name: build (Ubuntu) + runs-on: ubuntu-latest + container: jforissier/optee_client_ci_ubuntu + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: arm64 with make + run: make -j O=out-make-aarch64 CROSS_COMPILE=aarch64-linux-gnu- + - name: armhf with make + run: make -j O=out-make-armhf CROSS_COMPILE=arm-linux-gnueabihf- + - name: arm64 with cmake + run: | + set -e -v + mkdir out-cmake-aarch64 && cd out-cmake-aarch64 + PKG_CONFIG=aarch64-linux-gnu-pkg-config cmake .. -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc + make -j + - name: armhf with cmake + run: | + set -e -v + mkdir out-cmake-armhf && cd out-cmake-armhf + PKG_CONFIG=arm-linux-gnueabihf-pkg-config cmake .. -DCMAKE_C_COMPILER=arm-linux-gnueabihf-gcc + make -j diff --git a/Android.mk b/Android.mk index ca08a80..08e72e8 100644 --- a/Android.mk +++ b/Android.mk @@ -49,8 +49,7 @@ LOCAL_CFLAGS += -DCFG_TEE_BENCHMARK LOCAL_SRC_FILES += teec_benchmark.c endif -LOCAL_C_INCLUDES := $(LOCAL_PATH)/public \ - $(LOCAL_PATH)/libteec/include \ +LOCAL_C_INCLUDES := $(LOCAL_PATH)/libteec/include LOCAL_PRELINK_MODULE := false LOCAL_MODULE := libteec @@ -62,7 +61,7 @@ LOCAL_VENDOR_MODULE := true LOCAL_MULTILIB := both LOCAL_MODULE_TARGET_ARCH := arm arm64 -LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/public +LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/libteec/include include $(BUILD_SHARED_LIBRARY) @@ -82,7 +81,7 @@ LOCAL_SRC_FILES := libckteec/src/pkcs11_api.c \ libckteec/src/serializer.c \ libckteec/src/serialize_ck.c -LOCAL_C_INCLUDES := $(LOCAL_PATH)/public \ +LOCAL_C_INCLUDES := $(LOCAL_PATH)/libteec/include \ $(LOCAL_PATH)/libckteec/include LOCAL_SHARED_LIBRARIES := libteec diff --git a/CMakeLists.txt b/CMakeLists.txt index 0786752..83107f4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,10 +1,11 @@ -cmake_minimum_required (VERSION 3.4) -project (optee_client C) +cmake_minimum_required(VERSION 3.4) +project(optee_client C) # https://cmake.org/Wiki/CMake_Useful_Variables -set (CMAKE_TOOLCHAIN_FILE CMakeToolchain.txt) +set(CMAKE_TOOLCHAIN_FILE CMakeToolchain.txt) -set (CFG_WERROR 1 CACHE BOOL "Build with -Werror") +option(CFG_WERROR "Build with -Werror" TRUE) +option(WITH_TEEACL "Build libteeacl" TRUE) include(GNUInstallDirs) @@ -12,7 +13,7 @@ include(GNUInstallDirs) # Compiler flags: # We want to use the same flags in the entire optee_client git ################################################################################ -add_compile_options ( +add_compile_options( -Wall -Wbad-function-cast -Wcast-align -Werror-implicit-function-declaration -Wextra -Wfloat-equal -Wformat-nonliteral -Wformat-security @@ -20,9 +21,13 @@ add_compile_options ( -Wmissing-format-attribute -Wmissing-include-dirs -Wmissing-noreturn -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wshadow -Wstrict-prototypes - -Wswitch-default -Wunsafe-loop-optimizations - -Wwrite-strings -fPIC + -Wswitch-default -Wwrite-strings -fPIC ) +if("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU") + add_compile_options( + -Wunsafe-loop-optimizations + ) +endif() if(CFG_WERROR) add_compile_options(-Werror) endif(CFG_WERROR) @@ -33,11 +38,12 @@ if(CCACHE_FOUND) set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache) endif(CCACHE_FOUND) -add_subdirectory (libteec) -add_subdirectory (tee-supplicant) -add_subdirectory (public) -add_subdirectory (libckteec) -find_package (PkgConfig REQUIRED) -pkg_check_modules(uuid REQUIRED IMPORTED_TARGET uuid) -add_subdirectory (libteeacl) -add_subdirectory (libseteec) +add_subdirectory(libteec) +add_subdirectory(tee-supplicant) +add_subdirectory(libckteec) +if(WITH_TEEACL) + find_package(PkgConfig REQUIRED) + pkg_check_modules(uuid REQUIRED IMPORTED_TARGET uuid) + add_subdirectory(libteeacl) +endif(WITH_TEEACL) +add_subdirectory(libseteec) diff --git a/Makefile b/Makefile index 7803a5a..0d5a500 100644 --- a/Makefile +++ b/Makefile @@ -15,9 +15,14 @@ DESTDIR ?= $(EXPORT_DIR) SBINDIR ?= /usr/sbin LIBDIR ?= /usr/lib INCLUDEDIR ?= /usr/include +sbindir ?= $(SBINDIR) +libdir ?= $(LIBDIR) +includedir ?= $(INCLUDEDIR) + +WITH_TEEACL ?= 1 .PHONY: all build build-libteec build-libckteec build-libseteec \ - build-libteeacl check-libuuid install copy_export clean cscope \ + build-libteeacl install copy_export clean cscope \ clean-cscope \ checkpatch-pre-req checkpatch-modified-patch checkpatch-modified-file \ checkpatch-last-commit-patch checkpatch-last-commit-file \ @@ -35,8 +40,10 @@ build-tee-supplicant: build-libteec @echo "Building tee-supplicant" $(MAKE) --directory=tee-supplicant --no-print-directory --no-builtin-variables CFG_TEE_SUPP_LOG_LEVEL=$(CFG_TEE_SUPP_LOG_LEVEL) -build: build-libteec build-tee-supplicant build-libckteec build-libseteec \ - build-libteeacl +build: build-libteec build-tee-supplicant build-libckteec build-libseteec +ifeq ($(WITH_TEEACL),1) +build: build-libteeacl +endif build-libckteec: build-libteec @echo "Building libckteec.so" @@ -46,18 +53,17 @@ build-libseteec: build-libteec @echo "Building libseteec.so" @$(MAKE) --directory=libseteec --no-print-directory --no-builtin-variables -build-libteeacl: check-libuuid +build-libteeacl: @echo "Building libteeacl.so" @$(MAKE) --directory=libteeacl --no-print-directory --no-builtin-variables -check-libuuid: - @echo "Finding uuid.pc" - pkg-config --atleast-version=2.34 uuid - install: copy_export clean: clean-libteec clean-tee-supplicant clean-cscope clean-libckteec \ - clean-libseteec clean-libteeacl + clean-libseteec +ifeq ($(WITH_TEEACL),1) +clean: clean-libteeacl +endif clean-libteec: @$(MAKE) --directory=libteec --no-print-directory clean @@ -149,18 +155,20 @@ checkpatch-all-files: checkpatch-pre-req distclean: clean copy_export: build - mkdir -p $(DESTDIR)$(SBINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(INCLUDEDIR) - cp config.mk $(DESTDIR)/$(INCLUDEDIR)/optee_client_config.mk - cp -d ${O}/libteec/libteec.so* $(DESTDIR)$(LIBDIR) - cp -d ${O}/libteec/libteec.a $(DESTDIR)$(LIBDIR) - cp ${O}/tee-supplicant/tee-supplicant $(DESTDIR)$(SBINDIR) - cp public/*.h $(DESTDIR)$(INCLUDEDIR) - cp libckteec/include/*.h $(DESTDIR)$(INCLUDEDIR) - cp -d ${O}/libckteec/libckteec.so* $(DESTDIR)$(LIBDIR) - cp -d ${O}/libckteec/libckteec.a $(DESTDIR)$(LIBDIR) - cp libteeacl/include/*.h $(DESTDIR)$(INCLUDEDIR) - cp -d ${O}/libteeacl/libteeacl.so* $(DESTDIR)$(LIBDIR) - cp -d ${O}/libteeacl/libteeacl.a $(DESTDIR)$(LIBDIR) - cp libseteec/include/*.h $(DESTDIR)$(INCLUDEDIR) - cp -d ${O}/libseteec/libseteec.so* $(DESTDIR)$(LIBDIR) - cp -d ${O}/libseteec/libseteec.a $(DESTDIR)$(LIBDIR) + mkdir -p $(DESTDIR)$(sbindir) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir) + cp config.mk $(DESTDIR)/$(includedir)/optee_client_config.mk + cp -d ${O}/libteec/libteec.so* $(DESTDIR)$(libdir) + cp -d ${O}/libteec/libteec.a $(DESTDIR)$(libdir) + cp ${O}/tee-supplicant/tee-supplicant $(DESTDIR)$(sbindir) + cp libteec/include/*.h $(DESTDIR)$(includedir) + cp libckteec/include/*.h $(DESTDIR)$(includedir) + cp -d ${O}/libckteec/libckteec.so* $(DESTDIR)$(libdir) + cp -d ${O}/libckteec/libckteec.a $(DESTDIR)$(libdir) +ifeq ($(WITH_TEEACL),1) + cp libteeacl/include/*.h $(DESTDIR)$(includedir) + cp -d ${O}/libteeacl/libteeacl.so* $(DESTDIR)$(libdir) + cp -d ${O}/libteeacl/libteeacl.a $(DESTDIR)$(libdir) +endif + cp libseteec/include/*.h $(DESTDIR)$(includedir) + cp -d ${O}/libseteec/libseteec.so* $(DESTDIR)$(libdir) + cp -d ${O}/libseteec/libseteec.a $(DESTDIR)$(libdir) diff --git a/ci/Dockerfile.debian b/ci/Dockerfile.debian new file mode 100644 index 0000000..875f113 --- /dev/null +++ b/ci/Dockerfile.debian @@ -0,0 +1,21 @@ +# Dockerfile for CI image used in ../.github/workflows/ci.yml + +FROM debian:bullseye-slim +MAINTAINER Jerome Forissier <jerome.forissier@linaro.org> + +ENV LANG=C.UTF-8 + +RUN dpkg --add-architecture armhf +RUN dpkg --add-architecture arm64 + +RUN apt update +RUN apt upgrade -y +RUN apt install -y \ + cmake \ + dpkg-dev \ + gcc-aarch64-linux-gnu \ + gcc-arm-linux-gnueabihf \ + make \ + pkg-config \ + uuid-dev:armhf \ + uuid-dev:arm64 diff --git a/ci/Dockerfile.ubuntu b/ci/Dockerfile.ubuntu new file mode 100644 index 0000000..9a4f8a5 --- /dev/null +++ b/ci/Dockerfile.ubuntu @@ -0,0 +1,30 @@ +# Dockerfile for CI image used in ../.github/workflows/ci.yml + +FROM ubuntu:22.04 +MAINTAINER Jerome Forissier <jerome.forissier@linaro.org> + +ENV LANG=C.UTF-8 + +RUN dpkg --add-architecture armhf +RUN dpkg --add-architecture arm64 + +RUN echo 'deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy main restricted universe multiverse' > /etc/apt/sources.list +RUN echo 'deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy-updates main restricted universe multiverse' >> /etc/apt/sources.list +RUN echo 'deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy-backports main restricted universe multiverse' >> /etc/apt/sources.list +RUN echo 'deb [arch=amd64] http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse' >> /etc/apt/sources.list +RUN echo 'deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports/ jammy main restricted universe multiverse' >> /etc/apt/sources.list +RUN echo 'deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports/ jammy-updates main restricted universe multiverse' >> /etc/apt/sources.list +RUN echo 'deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports/ jammy-backports main restricted universe multiverse' >> /etc/apt/sources.list +RUN echo 'deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports/ jammy-security main restricted universe multiverse' >> /etc/apt/sources.list + +RUN apt update +RUN apt upgrade -y +RUN apt install -y \ + cmake \ + dpkg-dev \ + gcc-aarch64-linux-gnu \ + gcc-arm-linux-gnueabihf \ + make \ + pkg-config \ + uuid-dev:armhf \ + uuid-dev:arm64 diff --git a/flags.mk b/flags.mk index c2f1846..be4088c 100644 --- a/flags.mk +++ b/flags.mk @@ -5,6 +5,9 @@ CROSS_COMPILE ?= arm-linux-gnueabihf- CC ?= $(CROSS_COMPILE)gcc AR ?= $(CROSS_COMPILE)ar +PKG_CONFIG ?= $(CROSS_COMPILE)pkg-config + +C_COMPILER=$(shell readlink -f $$(which $(CC))) override CFLAGS += -Wall -Wbad-function-cast -Wcast-align \ -Werror-implicit-function-declaration -Wextra \ @@ -13,8 +16,10 @@ override CFLAGS += -Wall -Wbad-function-cast -Wcast-align \ -Wmissing-format-attribute -Wmissing-include-dirs \ -Wmissing-noreturn -Wmissing-prototypes -Wnested-externs \ -Wpointer-arith -Wshadow -Wstrict-prototypes \ - -Wswitch-default -Wunsafe-loop-optimizations \ - -Wwrite-strings -D_FILE_OFFSET_BITS=64 + -Wswitch-default -Wwrite-strings -D_FILE_OFFSET_BITS=64 +ifneq (,$(findstring gcc,$(C_COMPILER))) +override CFLAGS += -Wunsafe-loop-optimizations +endif ifeq ($(CFG_WERROR),y) override CFLAGS += -Werror endif diff --git a/libckteec/CMakeLists.txt b/libckteec/CMakeLists.txt index 26c050e..978e665 100644 --- a/libckteec/CMakeLists.txt +++ b/libckteec/CMakeLists.txt @@ -15,7 +15,7 @@ include(GNUInstallDirs) ################################################################################ # Source files ################################################################################ -set (SRC +set(SRC src/pkcs11_api.c src/ck_debug.c src/ck_helpers.c @@ -29,9 +29,9 @@ set (SRC ################################################################################ # Built library ################################################################################ -add_library (ckteec ${SRC}) +add_library(ckteec ${SRC}) -set_target_properties (ckteec PROPERTIES +set_target_properties(ckteec PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION_MAJOR} ) @@ -39,7 +39,7 @@ set_target_properties (ckteec PROPERTIES ################################################################################ # Flags always set ################################################################################ -target_compile_definitions (ckteec +target_compile_definitions(ckteec PRIVATE -D_GNU_SOURCE PRIVATE -DBINARY_PREFIX="LT" ) @@ -61,7 +61,7 @@ target_include_directories(teec PUBLIC include ) -target_link_libraries (ckteec +target_link_libraries(ckteec PRIVATE pthread PRIVATE teec PRIVATE m @@ -70,7 +70,7 @@ target_link_libraries (ckteec ################################################################################ # Install targets ################################################################################ -install (TARGETS ckteec +install(TARGETS ckteec DESTINATION ${CMAKE_INSTALL_LIBDIR} ) diff --git a/libckteec/Makefile b/libckteec/Makefile index 859ce3c..de7e330 100644 --- a/libckteec/Makefile +++ b/libckteec/Makefile @@ -31,7 +31,7 @@ LIBCKTEEC_SRCS += serializer.c LIBCKTEEC_SRCS += serialize_ck.c LIBCKTEEC_INCLUDES = ${CURDIR}/include -LIBCKTEEC_INCLUDES += ${CURDIR}/../public +LIBCKTEEC_INCLUDES += ${CURDIR}/../libteec/include LIBCKTEEC_CFLAGS := $(addprefix -I, $(LIBCKTEEC_INCLUDES)) \ $(CFLAGS) -D_GNU_SOURCE -fPIC diff --git a/libckteec/include/CMakeLists.txt b/libckteec/include/CMakeLists.txt index 826bb48..c342012 100644 --- a/libckteec/include/CMakeLists.txt +++ b/libckteec/include/CMakeLists.txt @@ -1,4 +1,4 @@ -project (libckteec-headers C) +project(libckteec-headers C) FILE(GLOB INSTALL_HEADERS "*.h") @@ -9,4 +9,4 @@ target_include_directories( $<INSTALL_INTERFACE:{CMAKE_INSTALL_INCLUDEDIR}> ) -install (FILES ${INSTALL_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) +install(FILES ${INSTALL_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) diff --git a/libckteec/include/pkcs11.h b/libckteec/include/pkcs11.h index bfd7661..6d7a0f7 100644 --- a/libckteec/include/pkcs11.h +++ b/libckteec/include/pkcs11.h @@ -548,6 +548,13 @@ struct CK_RSA_PKCS_OAEP_PARAMS { CK_ULONG ulSourceDataLen; }; +typedef struct CK_RSA_AES_KEY_WRAP_PARAMS { + CK_ULONG ulAESKeyBits; + CK_RSA_PKCS_OAEP_PARAMS_PTR pOAEPParams; +} CK_RSA_AES_KEY_WRAP_PARAMS; + +typedef CK_RSA_AES_KEY_WRAP_PARAMS *CK_RSA_AES_KEY_WRAP_PARAMS_PTR; + /* * PKCS#11 return values */ diff --git a/libckteec/src/serialize_ck.c b/libckteec/src/serialize_ck.c index d1411ec..6fe9d10 100644 --- a/libckteec/src/serialize_ck.c +++ b/libckteec/src/serialize_ck.c @@ -582,6 +582,49 @@ static CK_RV serialize_mecha_rsa_oaep_param(struct serializer *obj, params->ulSourceDataLen); } +static CK_RV serialize_mecha_rsa_aes_key_wrap(struct serializer *obj, + CK_MECHANISM_PTR mecha) +{ + CK_RSA_AES_KEY_WRAP_PARAMS *params = mecha->pParameter; + CK_RSA_PKCS_OAEP_PARAMS *aes_params = params->pOAEPParams; + CK_RV rv = CKR_GENERAL_ERROR; + size_t params_size = 5 * sizeof(uint32_t) + aes_params->ulSourceDataLen; + + if (mecha->ulParameterLen != sizeof(*params)) + return CKR_ARGUMENTS_BAD; + + rv = serialize_32b(obj, obj->type); + if (rv) + return rv; + + rv = serialize_32b(obj, params_size); + if (rv) + return rv; + + rv = serialize_ck_ulong(obj, params->ulAESKeyBits); + if (rv) + return rv; + + rv = serialize_ck_ulong(obj, aes_params->hashAlg); + if (rv) + return rv; + + rv = serialize_ck_ulong(obj, aes_params->mgf); + if (rv) + return rv; + + rv = serialize_ck_ulong(obj, aes_params->source); + if (rv) + return rv; + + rv = serialize_ck_ulong(obj, aes_params->ulSourceDataLen); + if (rv) + return rv; + + return serialize_buffer(obj, aes_params->pSourceData, + aes_params->ulSourceDataLen); +} + static CK_RV serialize_mecha_eddsa(struct serializer *obj, CK_MECHANISM_PTR mecha) { @@ -739,6 +782,8 @@ CK_RV serialize_ck_mecha_params(struct serializer *obj, case CKM_SHA384_HMAC_GENERAL: case CKM_SHA512_HMAC_GENERAL: return serialize_mecha_mac_general_param(obj, &mecha); + case CKM_RSA_AES_KEY_WRAP: + return serialize_mecha_rsa_aes_key_wrap(obj, &mecha); default: return CKR_MECHANISM_INVALID; diff --git a/libseteec/CMakeLists.txt b/libseteec/CMakeLists.txt index 5080231..cabf92f 100644 --- a/libseteec/CMakeLists.txt +++ b/libseteec/CMakeLists.txt @@ -15,16 +15,16 @@ include(GNUInstallDirs) ################################################################################ # Source files ################################################################################ -set (SRC +set(SRC src/se.c ) ################################################################################ # Built library ################################################################################ -add_library (seteec ${SRC}) +add_library(seteec ${SRC}) -set_target_properties (seteec PROPERTIES +set_target_properties(seteec PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION_MAJOR} ) @@ -32,7 +32,7 @@ set_target_properties (seteec PROPERTIES ################################################################################ # Flags always set ################################################################################ -target_compile_definitions (seteec +target_compile_definitions(seteec PRIVATE -D_GNU_SOURCE PRIVATE -DBINARY_PREFIX="LT" ) @@ -50,7 +50,7 @@ target_include_directories(seteec PRIVATE src ) -target_link_libraries (seteec +target_link_libraries(seteec PRIVATE pthread PRIVATE teec ) @@ -58,7 +58,7 @@ target_link_libraries (seteec ################################################################################ # Install targets ################################################################################ -install (TARGETS seteec +install(TARGETS seteec DESTINATION ${CMAKE_INSTALL_LIBDIR} ) diff --git a/libseteec/Makefile b/libseteec/Makefile index 8384d5b..ce8b217 100644 --- a/libseteec/Makefile +++ b/libseteec/Makefile @@ -24,7 +24,7 @@ LIBSETEEC_SRC_DIR := src LIBSETEEC_SRCS = se.c LIBSETEEC_INCLUDES = ${CURDIR}/include -LIBSETEEC_INCLUDES += ${CURDIR}/../public +LIBSETEEC_INCLUDES += ${CURDIR}/../libteec/include LIBSETEEC_CFLAGS := $(addprefix -I, $(LIBSETEEC_INCLUDES)) \ $(CFLAGS) -D_GNU_SOURCE -fPIC diff --git a/libseteec/include/CMakeLists.txt b/libseteec/include/CMakeLists.txt index 9241574..ee6fadd 100644 --- a/libseteec/include/CMakeLists.txt +++ b/libseteec/include/CMakeLists.txt @@ -1,7 +1,7 @@ -project (libseteec-headers C) +project(libseteec-headers C) FILE(GLOB INSTALL_HEADERS "*.h") add_library(${PROJECT_NAME} INTERFACE) -install (FILES ${INSTALL_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) +install(FILES ${INSTALL_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) diff --git a/libteeacl/Makefile b/libteeacl/Makefile index 5485144..fe50c51 100644 --- a/libteeacl/Makefile +++ b/libteeacl/Makefile @@ -3,7 +3,7 @@ include ../config.mk OUT_DIR := $(OO)/libteeacl -.PHONY: all libteeacl clean +.PHONY: all libteeacl check-libuuid clean all: libteeacl install: libteeacl @@ -27,10 +27,10 @@ LIBTEEACL_SRCS += tee_uuid.c LIBTEEACL_INCLUDES = ${CURDIR}/include LIBTEEACL_CFLAGS := $(addprefix -I, $(LIBTEEACL_INCLUDES)) \ - $(shell pkg-config --cflags uuid) \ + $(shell $(PKG_CONFIG) --cflags uuid) \ $(CFLAGS) -D_GNU_SOURCE -fPIC -LIBTEEACL_LFLAGS := $(LDFLAGS) $(shell pkg-config --libs uuid) +LIBTEEACL_LFLAGS := $(LDFLAGS) $(shell $(PKG_CONFIG) --libs uuid) LIBTEEACL_OBJ_DIR := $(OUT_DIR) LIBTEEACL_OBJS := $(patsubst %.c,$(LIBTEEACL_OBJ_DIR)/%.o, $(LIBTEEACL_SRCS)) @@ -40,6 +40,12 @@ $(LIBTEEACL_OBJ_DIR)/%.o: ${LIBTEEACL_SRC_DIR}/%.c @echo " CC $<" $(VPREFIX)$(CC) $(LIBTEEACL_CFLAGS) -c $< -o $@ +libteeacl: check-libuuid + +check-libuuid: + @echo " Finding uuid.pc" + $(VPREFIX)$(PKG_CONFIG) --atleast-version=2.34 uuid + libteeacl: $(OUT_DIR)/$(LIBTEEACL_SO_LIBRARY) $(OUT_DIR)/$(LIBTEEACL_SO_LIBRARY): $(LIBTEEACL_OBJS) diff --git a/libteeacl/include/teeacl.h b/libteeacl/include/teeacl.h index f4db914..1d7a5ee 100644 --- a/libteeacl/include/teeacl.h +++ b/libteeacl/include/teeacl.h @@ -12,7 +12,7 @@ #define TEEACL_H #include <grp.h> -#include <uuid/uuid.h> +#include <uuid.h> #ifdef __cplusplus extern "C" { diff --git a/libteeacl/src/group.c b/libteeacl/src/group.c index 10965dd..bd165a1 100644 --- a/libteeacl/src/group.c +++ b/libteeacl/src/group.c @@ -72,7 +72,8 @@ enum rv_groupmember teeacl_user_is_member_of(const char *user, gid_t group) if (ret == -1) { p_groups = groups; - groups = reallocarray(groups, grouplistsize, sizeof(gid_t)); + /* we use realloc, since uClibc does not implement reallocarray */ + groups = realloc(groups, grouplistsize * sizeof(gid_t)); if (!groups) { free(p_groups); return E_MEMORY; diff --git a/libteec/CMakeLists.txt b/libteec/CMakeLists.txt index dd96e1b..0c73eba 100644 --- a/libteec/CMakeLists.txt +++ b/libteec/CMakeLists.txt @@ -13,29 +13,32 @@ endif() ################################################################################ # Configuration flags always included ################################################################################ -option (CFG_TEE_BENCHMARK "Build with benchmark support" OFF) +option(CFG_TEE_BENCHMARK "Build with benchmark support" OFF) -set (CFG_TEE_CLIENT_LOG_LEVEL "1" CACHE STRING "libteec log level") -set (CFG_TEE_CLIENT_LOG_FILE "/data/tee/teec.log" CACHE STRING "Location of libteec log") +set(CFG_TEE_CLIENT_LOG_LEVEL "1" CACHE STRING "libteec log level") +set(CFG_TEE_CLIENT_LOG_FILE "/data/tee/teec.log" CACHE STRING "Location of libteec log") ################################################################################ # Source files ################################################################################ -set (SRC +set(SRC src/tee_client_api.c src/teec_trace.c ) -if (CFG_TEE_BENCHMARK) - set (SRC ${SRC} src/teec_benchmark.c) +if(CFG_TEE_BENCHMARK) + set(SRC ${SRC} src/teec_benchmark.c) endif() ################################################################################ # Built library ################################################################################ -add_library (teec ${SRC}) +add_library(teec ${SRC}) -set_target_properties (teec PROPERTIES +set(libteectgt teec) +configure_file(libteec.pc.in libteec.pc @ONLY) + +set_target_properties(teec PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION_MAJOR} ) @@ -43,7 +46,7 @@ set_target_properties (teec PROPERTIES ################################################################################ # Flags always set ################################################################################ -target_compile_definitions (teec +target_compile_definitions(teec PRIVATE -D_GNU_SOURCE PRIVATE -DDEBUGLEVEL_${CFG_TEE_CLIENT_LOG_LEVEL} PRIVATE -DTEEC_LOG_FILE="${CFG_TEE_CLIENT_LOG_FILE}" @@ -53,23 +56,34 @@ target_compile_definitions (teec ################################################################################ # Optional flags ################################################################################ -if (CFG_TEE_BENCHMARK) - target_compile_definitions (teec PRIVATE -DCFG_TEE_BENCHMARK) +if(CFG_TEE_BENCHMARK) + target_compile_definitions(teec PRIVATE -DCFG_TEE_BENCHMARK) endif() ################################################################################ # Public and private header and library dependencies ################################################################################ -target_include_directories(teec PUBLIC include) +target_include_directories(teec + PUBLIC include + PRIVATE src +) -target_link_libraries (teec +target_link_libraries(teec PUBLIC ${CMAKE_THREAD_LIBS_INIT} # this is pthreads - PRIVATE optee-client-headers) +) ################################################################################ # Install targets ################################################################################ # FIXME: This should in someway harmonize with CFG_TEE_CLIENT_LOAD_PATH # FIXME: Should we change this to /usr/local/lib? -install (TARGETS teec LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" +install(TARGETS teec LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}") + +install(DIRECTORY include + DESTINATION ${CMAKE_INSTALL_PREFIX} +) + +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libteec.pc" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig" +) diff --git a/libteec/Makefile b/libteec/Makefile index 3b279ab..41a21bb 100644 --- a/libteec/Makefile +++ b/libteec/Makefile @@ -28,7 +28,7 @@ TEEC_OBJ_DIR := $(OUT_DIR) TEEC_OBJS := $(patsubst %.c,$(TEEC_OBJ_DIR)/%.o, $(TEEC_SRCS)) TEEC_INCLUDES := \ ${CURDIR}/include \ - ${CURDIR}/../public \ + ${CURDIR}/src TEEC_CFLAGS := $(addprefix -I, $(TEEC_INCLUDES)) $(CFLAGS) -D_GNU_SOURCE \ -DDEBUGLEVEL_$(CFG_TEE_CLIENT_LOG_LEVEL) \ diff --git a/public/tee_bench.h b/libteec/include/tee_bench.h similarity index 100% rename from public/tee_bench.h rename to libteec/include/tee_bench.h diff --git a/public/tee_client_api.h b/libteec/include/tee_client_api.h similarity index 100% rename from public/tee_client_api.h rename to libteec/include/tee_client_api.h diff --git a/public/tee_client_api_extensions.h b/libteec/include/tee_client_api_extensions.h similarity index 100% rename from public/tee_client_api_extensions.h rename to libteec/include/tee_client_api_extensions.h diff --git a/public/tee_plugin_method.h b/libteec/include/tee_plugin_method.h similarity index 100% rename from public/tee_plugin_method.h rename to libteec/include/tee_plugin_method.h diff --git a/public/teec_trace.h b/libteec/include/teec_trace.h similarity index 100% rename from public/teec_trace.h rename to libteec/include/teec_trace.h diff --git a/libteec/libteec.pc.in b/libteec/libteec.pc.in new file mode 100644 index 0000000..e91e690 --- /dev/null +++ b/libteec/libteec.pc.in @@ -0,0 +1,14 @@ +prefix="@CMAKE_INSTALL_PREFIX@" +exec_prefix="${prefix}" +libdir="${prefix}/lib" +includedir="${prefix}/include" + +Name: @PROJECT_NAME@ +Description: @CMAKE_PROJECT_DESCRIPTION@ +URL: @CMAKE_PROJECT_HOMEPAGE_URL@ +Version: @PROJECT_VERSION@ +Requires: @pc_req_public@ +Requires.private: @pc_req_private@ +Cflags: -I"${includedir}" +Libs: -L"${libdir}" -l@libteectgt@ +Libs.private: -L"${libdir}" -l@libteectgt@ @pc_libs_private@ diff --git a/libteec/include/linux/tee.h b/libteec/src/linux/tee.h similarity index 100% rename from libteec/include/linux/tee.h rename to libteec/src/linux/tee.h diff --git a/libteec/src/tee_client_api.c b/libteec/src/tee_client_api.c index d8cc4b5..6d398ab 100644 --- a/libteec/src/tee_client_api.c +++ b/libteec/src/tee_client_api.c @@ -79,8 +79,10 @@ static void teec_mutex_unlock(pthread_mutex_t *mu) static void *teec_paged_aligned_alloc(size_t sz) { void *p = NULL; + size_t page_sz = sysconf(_SC_PAGESIZE); + size_t aligned_sz = ((sz + page_sz - 1) / page_sz) * page_sz; - if (!posix_memalign(&p, sysconf(_SC_PAGESIZE), sz)) + if (!posix_memalign(&p, page_sz, aligned_sz)) return p; return NULL; diff --git a/libteec/src/teec_benchmark.c b/libteec/src/teec_benchmark.c index f7a82e0..0d04c19 100644 --- a/libteec/src/teec_benchmark.c +++ b/libteec/src/teec_benchmark.c @@ -130,7 +130,7 @@ static void *mmap_paddr(intptr_t paddr, uint64_t size) offset = (off_t)paddr % getpagesize(); page_addr = (off_t)(paddr - offset); - hw_addr = (intptr_t *)mmap(0, size, PROT_READ|PROT_WRITE, + hw_addr = (intptr_t *)mmap(0, size + offset, PROT_READ|PROT_WRITE, MAP_SHARED, devmem, page_addr); if (hw_addr == MAP_FAILED) { close(devmem); diff --git a/libteec/include/teec_benchmark.h b/libteec/src/teec_benchmark.h similarity index 100% rename from libteec/include/teec_benchmark.h rename to libteec/src/teec_benchmark.h diff --git a/public/CMakeLists.txt b/public/CMakeLists.txt deleted file mode 100644 index 72b078a..0000000 --- a/public/CMakeLists.txt +++ /dev/null @@ -1,25 +0,0 @@ -project (optee-client-headers C) - -################################################################################ -# Header files to be exported -################################################################################ -FILE(GLOB INSTALL_HEADERS "*.h") - -################################################################################ -# Built library -################################################################################ -add_library(${PROJECT_NAME} INTERFACE) - -################################################################################ -# Public and private header and library dependencies -################################################################################ -target_include_directories( - teec - PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> - $<INSTALL_INTERFACE:{CMAKE_INSTALL_INCLUDEDIR}> -) - -################################################################################ -# Install targets -################################################################################ -install (FILES ${INSTALL_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) diff --git a/tee-supplicant/CMakeLists.txt b/tee-supplicant/CMakeLists.txt index 57a3326..b98fe2e 100644 --- a/tee-supplicant/CMakeLists.txt +++ b/tee-supplicant/CMakeLists.txt @@ -1,30 +1,30 @@ -project (tee-supplicant C) +project(tee-supplicant C) ################################################################################ # Configuration flags always included ################################################################################ -option (CFG_TA_TEST_PATH "Enable tee-supplicant to load from test/debug path" OFF) -option (RPMB_EMU "Enable tee-supplicant to emulate RPMB" ON) -option (CFG_TA_GPROF_SUPPORT "Enable tee-supplicant support for TAs instrumented with gprof" ON) -option (CFG_FTRACE_SUPPORT "Enable tee-supplicant support for TAs instrumented with ftrace" ON) -option (CFG_TEE_SUPP_PLUGINS "Enable tee-supplicant plugin support" ON) +option(CFG_TA_TEST_PATH "Enable tee-supplicant to load from test/debug path" OFF) +option(RPMB_EMU "Enable tee-supplicant to emulate RPMB" ON) +option(CFG_TA_GPROF_SUPPORT "Enable tee-supplicant support for TAs instrumented with gprof" ON) +option(CFG_FTRACE_SUPPORT "Enable tee-supplicant support for TAs instrumented with ftrace" ON) +option(CFG_TEE_SUPP_PLUGINS "Enable tee-supplicant plugin support" ON) -set (CFG_TEE_SUPP_LOG_LEVEL "1" CACHE STRING "tee-supplicant log level") +set(CFG_TEE_SUPP_LOG_LEVEL "1" CACHE STRING "tee-supplicant log level") # FIXME: Question is, is this really needed? Should just use defaults from # GNUInstallDirs? -set (CFG_TEE_CLIENT_LOAD_PATH "/lib" CACHE STRING "Colon-separated list of paths where to look for TAs (see also --ta-dir)") -set (CFG_TEE_FS_PARENT_PATH "/data/tee" CACHE STRING "Location of TEE filesystem (secure storage)") +set(CFG_TEE_CLIENT_LOAD_PATH "/lib" CACHE STRING "Colon-separated list of paths where to look for TAs (see also --ta-dir)") +set(CFG_TEE_FS_PARENT_PATH "/data/tee" CACHE STRING "Location of TEE filesystem (secure storage)") # FIXME: Why do we have if defined(CFG_GP_SOCKETS) && CFG_GP_SOCKETS == 1 in the c-file? -set (CFG_GP_SOCKETS "1" CACHE STRING "Enable GlobalPlatform Socket API support") -set (CFG_TEE_PLUGIN_LOAD_PATH "/usr/lib/tee-supplicant/plugins/" CACHE STRING "tee-supplicant's plugins path") +set(CFG_GP_SOCKETS "1" CACHE STRING "Enable GlobalPlatform Socket API support") +set(CFG_TEE_PLUGIN_LOAD_PATH "/usr/lib/tee-supplicant/plugins/" CACHE STRING "tee-supplicant's plugins path") -if (CFG_TEE_SUPP_PLUGINS) - set (CMAKE_INSTALL_RPATH "${CFG_TEE_PLUGIN_LOAD_PATH}") +if(CFG_TEE_SUPP_PLUGINS) + set(CMAKE_INSTALL_RPATH "${CFG_TEE_PLUGIN_LOAD_PATH}") endif() ################################################################################ # Source files ################################################################################ -set (SRC +set(SRC src/handle.c src/hmac_sha2.c src/rpmb.c @@ -34,27 +34,27 @@ set (SRC src/teec_ta_load.c ) -if (CFG_GP_SOCKETS) - set (SRC ${SRC} src/tee_socket.c) +if(CFG_GP_SOCKETS) + set(SRC ${SRC} src/tee_socket.c) endif() -if (CFG_TA_GPROF_SUPPORT OR CFG_FTRACE_SUPPORT) - set (SRC ${SRC} src/prof.c) +if(CFG_TA_GPROF_SUPPORT OR CFG_FTRACE_SUPPORT) + set(SRC ${SRC} src/prof.c) endif() -if (CFG_TEE_SUPP_PLUGINS) - set (SRC ${SRC} src/plugin.c) +if(CFG_TEE_SUPP_PLUGINS) + set(SRC ${SRC} src/plugin.c) endif() ################################################################################ # Built binary ################################################################################ -add_executable (${PROJECT_NAME} ${SRC}) +add_executable(${PROJECT_NAME} ${SRC}) ################################################################################ # Flags always set ################################################################################ -target_compile_definitions (${PROJECT_NAME} +target_compile_definitions(${PROJECT_NAME} PRIVATE -DDEBUGLEVEL_${CFG_TEE_SUPP_LOG_LEVEL} PRIVATE -DTEEC_LOAD_PATH="${CFG_TEE_CLIENT_LOAD_PATH}" PRIVATE -DTEE_FS_PARENT_PATH="${CFG_TEE_FS_PARENT_PATH}" @@ -64,33 +64,33 @@ target_compile_definitions (${PROJECT_NAME} ################################################################################ # Optional flags ################################################################################ -if (CFG_GP_SOCKETS) - target_compile_definitions (${PROJECT_NAME} +if(CFG_GP_SOCKETS) + target_compile_definitions(${PROJECT_NAME} PRIVATE -DCFG_GP_SOCKETS=${CFG_GP_SOCKETS}) endif() -if (CFG_TA_TEST_PATH) - target_compile_definitions (${PROJECT_NAME} +if(CFG_TA_TEST_PATH) + target_compile_definitions(${PROJECT_NAME} PRIVATE -DCFG_TA_TEST_PATH=${CFG_TA_TEST_PATH}) endif() -if (RPMB_EMU) - target_compile_definitions (${PROJECT_NAME} +if(RPMB_EMU) + target_compile_definitions(${PROJECT_NAME} PRIVATE -DRPMB_EMU=1) endif() -if (CFG_TA_GPROF_SUPPORT) - target_compile_definitions (${PROJECT_NAME} +if(CFG_TA_GPROF_SUPPORT) + target_compile_definitions(${PROJECT_NAME} PRIVATE -DCFG_TA_GPROF_SUPPORT) endif() -if (CFG_FTRACE_SUPPORT) - target_compile_definitions (${PROJECT_NAME} +if(CFG_FTRACE_SUPPORT) + target_compile_definitions(${PROJECT_NAME} PRIVATE -DCFG_FTRACE_SUPPORT) endif() -if (CFG_TEE_SUPP_PLUGINS) - target_compile_definitions (${PROJECT_NAME} +if(CFG_TEE_SUPP_PLUGINS) + target_compile_definitions(${PROJECT_NAME} PRIVATE -DTEE_SUPP_PLUGINS PRIVATE -DTEE_PLUGIN_LOAD_PATH="${CFG_TEE_PLUGIN_LOAD_PATH}" ) @@ -101,13 +101,12 @@ endif() ################################################################################ target_include_directories(${PROJECT_NAME} PRIVATE src) -target_link_libraries (${PROJECT_NAME} +target_link_libraries(${PROJECT_NAME} PRIVATE teec - PRIVATE optee-client-headers ) -if (CFG_TEE_SUPP_PLUGINS) - target_link_libraries (${PROJECT_NAME} +if(CFG_TEE_SUPP_PLUGINS) + target_link_libraries(${PROJECT_NAME} PRIVATE dl ) endif() @@ -115,4 +114,4 @@ endif() ################################################################################ # Install targets ################################################################################ -install (TARGETS ${PROJECT_NAME} RUNTIME DESTINATION ${CMAKE_INSTALL_SBINDIR}) +install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION ${CMAKE_INSTALL_SBINDIR}) diff --git a/tee-supplicant/Makefile b/tee-supplicant/Makefile index b862a7e..6f59c8c 100644 --- a/tee-supplicant/Makefile +++ b/tee-supplicant/Makefile @@ -40,7 +40,7 @@ TEES_OBJ_DIR := $(OUT_DIR) TEES_OBJS := $(patsubst %.c,$(TEES_OBJ_DIR)/%.o, $(TEES_SRCS)) TEES_INCLUDES := ${CURDIR}/../libteec/include \ ${CURDIR}/src \ - ${CURDIR}/../public \ + ${CURDIR}/../libteec/include \ TEES_CFLAGS := $(addprefix -I, $(TEES_INCLUDES)) $(CFLAGS) \ -DDEBUGLEVEL_$(CFG_TEE_SUPP_LOG_LEVEL) \ diff --git a/tee-supplicant/src/plugin.c b/tee-supplicant/src/plugin.c index 22c35df..cca22a1 100644 --- a/tee-supplicant/src/plugin.c +++ b/tee-supplicant/src/plugin.c @@ -80,12 +80,13 @@ static enum plugin_err load_plugin(const char *name, struct plugin *p) if (!handle) return PLUGIN_DL_OPEN_ERR; - p->handle = handle; - m = (struct plugin_method *)dlsym(handle, "plugin_method"); - if (!m || !m->name || !m->invoke) + if (!m || !m->name || !m->invoke) { + dlclose(handle); return PLUGIN_DL_SYM_ERR; + } + p->handle = handle; p->method = m; return PLUGIN_OK; diff --git a/tee-supplicant/src/tee_supp_fs.c b/tee-supplicant/src/tee_supp_fs.c index 04a89c7..cc4120f 100644 --- a/tee-supplicant/src/tee_supp_fs.c +++ b/tee-supplicant/src/tee_supp_fs.c @@ -89,6 +89,17 @@ static size_t tee_fs_get_absolute_filename(char *file, char *out, return (size_t)s; } +static void fs_fsync(void) +{ + int fd = 0; + + fd = open(tee_fs_root, O_RDONLY | O_DIRECTORY); + if (fd > 0) { + fsync(fd); + close(fd); + } +} + static int do_mkdir(const char *path, mode_t mode) { struct stat st; @@ -101,6 +112,7 @@ static int do_mkdir(const char *path, mode_t mode) if (stat(path, &st) != 0 && !S_ISDIR(st.st_mode)) return -1; + fs_fsync(); return 0; } @@ -277,6 +289,7 @@ static TEEC_Result ree_fs_new_create(size_t num_params, } out: + fs_fsync(); params[2].a = fd; return TEEC_SUCCESS; } @@ -491,6 +504,8 @@ static TEEC_Result ree_fs_new_rename(size_t num_params, if (errno == ENOENT) return TEEC_ERROR_ITEM_NOT_FOUND; } + + fs_fsync(); return TEEC_SUCCESS; } @@ -628,7 +643,7 @@ TEEC_Result tee_supp_fs_process(size_t num_params, if (!num_params || !tee_supp_param_is_value(params)) return TEEC_ERROR_BAD_PARAMETERS; - if (strlen(tee_fs_root) == 0) { + if (!tee_fs_root[0]) { if (tee_supp_fs_init() != 0) { EMSG("error tee_supp_fs_init: failed to create %s/", tee_fs_root); diff --git a/tee-supplicant/tee_supplicant_android.mk b/tee-supplicant/tee_supplicant_android.mk index 49bc388..04eee2a 100644 --- a/tee-supplicant/tee_supplicant_android.mk +++ b/tee-supplicant/tee_supplicant_android.mk @@ -62,7 +62,7 @@ ifeq ($(CFG_FTRACE_SUPPORT),y) LOCAL_CFLAGS += -DCFG_FTRACE_SUPPORT endif -LOCAL_C_INCLUDES := $(LOCAL_PATH)/../public \ +LOCAL_C_INCLUDES := $(LOCAL_PATH)/../libteec/include \ $(LOCAL_PATH)/../libteec/include \ $(LOCAL_PATH)/src -- GitLab From 8b61048b2e0d85d1a9e9a117ab43c18be90e6c47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dylan=20A=C3=AFssi?= <dylan.aissi@collabora.com> Date: Tue, 13 Feb 2024 10:11:35 +0100 Subject: [PATCH 2/3] Release optee-client version 4.0.0-1+apertis1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Dylan Aïssi <dylan.aissi@collabora.com> --- debian/changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/debian/changelog b/debian/changelog index 560eaa8..aac40e4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +optee-client (4.0.0-1+apertis1) apertis; urgency=medium + + * Sync from debian/trixie. + + -- Dylan Aïssi <dylan.aissi@collabora.com> Tue, 13 Feb 2024 10:10:42 +0100 + optee-client (4.0.0-1) unstable; urgency=low * New upstream release. -- GitLab From efdaf1679e9c87dfd41c2b7e002cbfb7c4353b4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dylan=20A=C3=AFssi?= <dylan.aissi@collabora.com> Date: Tue, 13 Feb 2024 09:12:39 +0000 Subject: [PATCH 3/3] Refresh the automatically detected licensing information MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Dylan Aïssi <dylan.aissi@collabora.com> --- debian/apertis/copyright | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/debian/apertis/copyright b/debian/apertis/copyright index ae0a9a2..7fe0606 100644 --- a/debian/apertis/copyright +++ b/debian/apertis/copyright @@ -57,40 +57,37 @@ Copyright: 2020, Vaisala Oyj. License: BSD-2-clause Files: libteec/* -Copyright: 2015, 2016, Linaro Limited +Copyright: 2016, Linaro Limited License: BSD-2-clause -Files: libteec/include/teec_benchmark.h +Files: libteec/include/tee_bench.h Copyright: 2017, Linaro Limited License: BSD-2-clause -Files: libteec/src/teec_benchmark.c -Copyright: 2017, Linaro Limited +Files: libteec/include/tee_client_api.h +Copyright: 2015, 2016, Linaro Limited + 2014, STMicroelectronics International N.V. License: BSD-2-clause -Files: libteec/src/teec_trace.c -Copyright: 2014, STMicroelectronics International N.V. +Files: libteec/include/tee_plugin_method.h +Copyright: 2020, Open Mobile Platform LLC License: BSD-2-clause -Files: public/* +Files: libteec/include/teec_trace.h Copyright: 2014, STMicroelectronics International N.V. License: BSD-2-clause -Files: public/tee_bench.h -Copyright: 2017, Linaro Limited -License: BSD-2-clause - -Files: public/tee_client_api.h +Files: libteec/src/* Copyright: 2015, 2016, Linaro Limited - 2014, STMicroelectronics International N.V. License: BSD-2-clause -Files: public/tee_client_api_extensions.h -Copyright: 2016, Linaro Limited +Files: libteec/src/teec_benchmark.c + libteec/src/teec_benchmark.h +Copyright: 2017, Linaro Limited License: BSD-2-clause -Files: public/tee_plugin_method.h -Copyright: 2020, Open Mobile Platform LLC +Files: libteec/src/teec_trace.c +Copyright: 2014, STMicroelectronics International N.V. License: BSD-2-clause Files: scripts/* -- GitLab