Skip to content

Commit 53baf00

Browse files
authored
Merge branch 'zephyrproject-rtos:zephyr' into zephyr
2 parents 68c0da7 + fb36f3f commit 53baf00

File tree

1,348 files changed

+63104
-53954
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,348 files changed

+63104
-53954
lines changed

.github/pull_request_template.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ Please write a few sentences describing the overall goals of the pull request's
99
Please tick as appropriate and edit the reasons (e.g.: "backport: not needed because this is a new feature")
1010

1111
- [ ] **changelog** provided, or not required
12-
- [ ] **backport** done, or not required
12+
- [ ] **3.6 backport** done, or not required
13+
- [ ] **2.28 backport** done, or not required
1314
- [ ] **tests** provided, or not required
1415

1516

@@ -18,3 +19,10 @@ Please tick as appropriate and edit the reasons (e.g.: "backport: not needed bec
1819

1920
Please refer to the [contributing guidelines](https://github.com/Mbed-TLS/mbedtls/blob/development/CONTRIBUTING.md), especially the
2021
checklist for PR contributors.
22+
23+
Help make review efficient:
24+
* Multiple simple commits
25+
- please structure your PR into a series of small commits, each of which does one thing
26+
* Avoid force-push
27+
- please do not force-push to update your PR - just add new commit(s)
28+
* See our [Guidelines for Contributors](https://mbed-tls.readthedocs.io/en/latest/reviews/review-for-contributors/) for more details about the review process.

.gitignore

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
seedfile
33
# MBEDTLS_PSA_INJECT_ENTROPY seed file created by the test framework
44
00000000ffffff52.psa_its
5+
# Log files created by all.sh to reduce the logs in case a component runs
6+
# successfully
7+
quiet-make.*
58

69
# CMake build artifacts:
710
CMakeCache.txt
@@ -63,5 +66,10 @@ massif-*
6366
/cscope*.out
6467
/tags
6568

66-
# Clangd compilation database
69+
# clangd compilation database
6770
compile_commands.json
71+
# clangd index files
72+
/.cache/clangd/index/
73+
74+
# VScode folder to store local debug files and configurations
75+
.vscode

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "framework"]
2+
path = framework
3+
url = https://github.com/Mbed-TLS/mbedtls-framework

.readthedocs.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@
55
# Required
66
version: 2
77

8+
# Include the framework submodule in the build
9+
submodules:
10+
include:
11+
- framework
12+
813
# Set the version of Python and other tools you might need
914
build:
1015
os: ubuntu-20.04

3rdparty/Makefile.inc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
THIRDPARTY_DIR = $(dir $(word 2, $(MAKEFILE_LIST)))
1+
THIRDPARTY_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
22
include $(THIRDPARTY_DIR)/everest/Makefile.inc
33
include $(THIRDPARTY_DIR)/p256-m/Makefile.inc

3rdparty/everest/Makefile.inc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
THIRDPARTY_INCLUDES+=-I../3rdparty/everest/include -I../3rdparty/everest/include/everest -I../3rdparty/everest/include/everest/kremlib
1+
THIRDPARTY_INCLUDES+=-I$(THIRDPARTY_DIR)/everest/include -I$(THIRDPARTY_DIR)/everest/include/everest -I$(THIRDPARTY_DIR)/everest/include/everest/kremlib
22

33
THIRDPARTY_CRYPTO_OBJECTS+= \
4-
../3rdparty/everest/library/everest.o \
5-
../3rdparty/everest/library/x25519.o \
6-
../3rdparty/everest/library/Hacl_Curve25519_joined.o
4+
$(THIRDPARTY_DIR)/everest/library/everest.o \
5+
$(THIRDPARTY_DIR)/everest/library/x25519.o \
6+
$(THIRDPARTY_DIR)/everest/library/Hacl_Curve25519_joined.o

3rdparty/p256-m/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Makefile

3rdparty/p256-m/Makefile.inc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
THIRDPARTY_INCLUDES+=-I../3rdparty/p256-m/p256-m/include -I../3rdparty/p256-m/p256-m/include/p256-m -I../3rdparty/p256-m/p256-m_driver_interface
1+
THIRDPARTY_INCLUDES+=-I$(THIRDPARTY_DIR)/p256-m/p256-m/include -I$(THIRDPARTY_DIR)/p256-m/p256-m/include/p256-m -I$(THIRDPARTY_DIR)/p256-m/p256-m_driver_interface
22

33
THIRDPARTY_CRYPTO_OBJECTS+= \
4-
../3rdparty/p256-m//p256-m_driver_entrypoints.o \
5-
../3rdparty/p256-m//p256-m/p256-m.o
4+
$(THIRDPARTY_DIR)/p256-m//p256-m_driver_entrypoints.o \
5+
$(THIRDPARTY_DIR)/p256-m//p256-m/p256-m.o

BRANCHES.md

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,32 @@
22

33
At any point in time, we have a number of maintained branches, currently consisting of:
44

5-
- The [`master`](https://github.com/Mbed-TLS/mbedtls/tree/master) branch:
5+
- The [`main`](https://github.com/Mbed-TLS/mbedtls/tree/main) branch:
66
this always contains the latest release, including all publicly available
77
security fixes.
88
- The [`development`](https://github.com/Mbed-TLS/mbedtls/tree/development) branch:
9-
this is where the current major version of Mbed TLS (version 3.x) is being
10-
prepared. It has API changes that make it incompatible with Mbed TLS 2.x,
9+
this is where the next major version of Mbed TLS (version 4.0) is being
10+
prepared. It has API changes that make it incompatible with Mbed TLS 3.x,
1111
as well as all the new features and bug fixes and security fixes.
1212
- One or more long-time support (LTS) branches: these only get bug fixes and
13-
security fixes. Currently, the only supported LTS branch is:
14-
[`mbedtls-2.28`](https://github.com/Mbed-TLS/mbedtls/tree/mbedtls-2.28).
13+
security fixes. Currently, the supported LTS branches are:
14+
- [`mbedtls-2.28`](https://github.com/Mbed-TLS/mbedtls/tree/mbedtls-2.28).
15+
- [`mbedtls-3.6`](https://github.com/Mbed-TLS/mbedtls/tree/mbedtls-3.6).
1516

1617
We retain a number of historical branches, whose names are prefixed by `archive/`,
1718
such as [`archive/mbedtls-2.7`](https://github.com/Mbed-TLS/mbedtls/tree/archive/mbedtls-2.7).
1819
These branches will not receive any changes or updates.
1920

2021
We use [Semantic Versioning](https://semver.org/). In particular, we maintain
21-
API compatibility in the `master` branch across minor version changes (e.g.
22+
API compatibility in the `main` branch across minor version changes (e.g.
2223
the API of 3.(x+1) is backward compatible with 3.x). We only break API
2324
compatibility on major version changes (e.g. from 3.x to 4.0). We also maintain
2425
ABI compatibility within LTS branches; see the next section for details.
2526

26-
Every major version will become an LTS branch when the next major version is
27-
released. We may occasionally create LTS branches from other releases at our
28-
discretion.
29-
When a new LTS branch is created, it usually remains supported for three years.
27+
We will make regular LTS releases on an 18-month cycle, each of which will have
28+
a 3 year support lifetime. On this basis, 3.6 LTS (released March 2024) will be
29+
supported until March 2027. The next LTS release will be a 4.x release, which is
30+
planned for September 2025.
3031

3132
## Backwards Compatibility for application code
3233

@@ -102,10 +103,13 @@ CONTRIBUTING](CONTRIBUTING.md#backwards-compatibility).
102103

103104
The following branches are currently maintained:
104105

105-
- [master](https://github.com/Mbed-TLS/mbedtls/tree/master)
106+
- [main](https://github.com/Mbed-TLS/mbedtls/tree/main)
106107
- [`development`](https://github.com/Mbed-TLS/mbedtls/)
108+
- [`mbedtls-3.6`](https://github.com/Mbed-TLS/mbedtls/tree/mbedtls-3.6)
109+
maintained until March 2027, see
110+
<https://github.com/Mbed-TLS/mbedtls/releases/tag/v3.6.1>.
107111
- [`mbedtls-2.28`](https://github.com/Mbed-TLS/mbedtls/tree/mbedtls-2.28)
108-
maintained until at least the end of 2024, see
109-
<https://github.com/Mbed-TLS/mbedtls/releases/tag/v2.28.7>.
112+
maintained until the end of 2024, see
113+
<https://github.com/Mbed-TLS/mbedtls/releases/tag/v2.28.9>.
110114

111115
Users are urged to always use the latest version of a maintained branch.

BUGS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Known issues in Mbed TLS are [tracked on GitHub](https://github.com/Mbed-TLS/mbe
77
If you think you've found a bug in Mbed TLS, please follow these steps:
88

99
1. Make sure you're using the latest version of a
10-
[maintained branch](BRANCHES.md): `master`, `development`,
10+
[maintained branch](BRANCHES.md): `main`, `development`,
1111
or a long-time support branch.
1212
2. Check [GitHub](https://github.com/Mbed-TLS/mbedtls/issues) to see if
1313
your issue has already been reported. If not, …

CMakeLists.txt

Lines changed: 79 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ cmake_minimum_required(VERSION 3.5.1)
2222

2323
include(CMakePackageConfigHelpers)
2424

25+
# Include convenience functions for printing properties and variables, like
26+
# cmake_print_properties(), cmake_print_variables().
27+
include(CMakePrintHelpers)
28+
2529
# https://cmake.org/cmake/help/latest/policy/CMP0011.html
2630
# Setting this policy is required in CMake >= 3.18.0, otherwise a warning is generated. The OLD
2731
# policy setting is deprecated, and will be removed in future versions.
@@ -34,9 +38,15 @@ cmake_policy(SET CMP0011 NEW)
3438
cmake_policy(SET CMP0012 NEW)
3539

3640
if(TEST_CPP)
37-
project("Mbed TLS" LANGUAGES C CXX)
41+
project("Mbed TLS"
42+
LANGUAGES C CXX
43+
VERSION 3.6.1
44+
)
3845
else()
39-
project("Mbed TLS" LANGUAGES C)
46+
project("Mbed TLS"
47+
LANGUAGES C
48+
VERSION 3.6.1
49+
)
4050
endif()
4151

4252
include(GNUInstallDirs)
@@ -67,10 +77,16 @@ endif()
6777

6878
option(DISABLE_PACKAGE_CONFIG_AND_INSTALL "Disable package configuration, target export and installation" ${MBEDTLS_AS_SUBPROJECT})
6979

70-
string(REGEX MATCH "Clang" CMAKE_COMPILER_IS_CLANG "${CMAKE_C_COMPILER_ID}")
71-
string(REGEX MATCH "GNU" CMAKE_COMPILER_IS_GNU "${CMAKE_C_COMPILER_ID}")
72-
string(REGEX MATCH "IAR" CMAKE_COMPILER_IS_IAR "${CMAKE_C_COMPILER_ID}")
73-
string(REGEX MATCH "MSVC" CMAKE_COMPILER_IS_MSVC "${CMAKE_C_COMPILER_ID}")
80+
if (CMAKE_C_SIMULATE_ID)
81+
set(COMPILER_ID ${CMAKE_C_SIMULATE_ID})
82+
else()
83+
set(COMPILER_ID ${CMAKE_C_COMPILER_ID})
84+
endif(CMAKE_C_SIMULATE_ID)
85+
86+
string(REGEX MATCH "Clang" CMAKE_COMPILER_IS_CLANG "${COMPILER_ID}")
87+
string(REGEX MATCH "GNU" CMAKE_COMPILER_IS_GNU "${COMPILER_ID}")
88+
string(REGEX MATCH "IAR" CMAKE_COMPILER_IS_IAR "${COMPILER_ID}")
89+
string(REGEX MATCH "MSVC" CMAKE_COMPILER_IS_MSVC "${COMPILER_ID}")
7490

7591
# the test suites currently have compile errors with MSVC
7692
if(CMAKE_COMPILER_IS_MSVC)
@@ -114,10 +130,15 @@ if(MBEDTLS_PYTHON_EXECUTABLE)
114130

115131
endif()
116132

133+
# We now potentially need to link all executables against PThreads, if available
134+
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
135+
set(THREADS_PREFER_PTHREAD_FLAG TRUE)
136+
find_package(Threads)
137+
117138
# If this is the root project add longer list of available CMAKE_BUILD_TYPE values
118139
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
119140
set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE}
120-
CACHE STRING "Choose the type of build: None Debug Release Coverage ASan ASanDbg MemSan MemSanDbg Check CheckFull"
141+
CACHE STRING "Choose the type of build: None Debug Release Coverage ASan ASanDbg MemSan MemSanDbg Check CheckFull TSan TSanDbg"
121142
FORCE)
122143
endif()
123144

@@ -173,8 +194,6 @@ function(get_name_without_last_ext dest_var full_name)
173194
set(${dest_var} ${no_ext_name} PARENT_SCOPE)
174195
endfunction(get_name_without_last_ext)
175196

176-
string(REGEX MATCH "Clang" CMAKE_COMPILER_IS_CLANG "${CMAKE_C_COMPILER_ID}")
177-
178197
include(CheckCCompilerFlag)
179198

180199
set(CMAKE_C_EXTENSIONS OFF)
@@ -185,7 +204,7 @@ if(CMAKE_COMPILER_IS_GNU)
185204
# note: starting with CMake 2.8 we could use CMAKE_C_COMPILER_VERSION
186205
execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion
187206
OUTPUT_VARIABLE GCC_VERSION)
188-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wwrite-strings")
207+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wwrite-strings -Wmissing-prototypes")
189208
if (GCC_VERSION VERSION_GREATER 3.0 OR GCC_VERSION VERSION_EQUAL 3.0)
190209
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wformat=2 -Wno-format-nonliteral")
191210
endif()
@@ -212,19 +231,23 @@ if(CMAKE_COMPILER_IS_GNU)
212231
set(CMAKE_C_FLAGS_COVERAGE "-O0 -g3 --coverage")
213232
set(CMAKE_C_FLAGS_ASAN "-fsanitize=address -fno-common -fsanitize=undefined -fno-sanitize-recover=all -O3")
214233
set(CMAKE_C_FLAGS_ASANDBG "-fsanitize=address -fno-common -fsanitize=undefined -fno-sanitize-recover=all -O1 -g3 -fno-omit-frame-pointer -fno-optimize-sibling-calls")
234+
set(CMAKE_C_FLAGS_TSAN "-fsanitize=thread -O3")
235+
set(CMAKE_C_FLAGS_TSANDBG "-fsanitize=thread -O1 -g3 -fno-omit-frame-pointer -fno-optimize-sibling-calls")
215236
set(CMAKE_C_FLAGS_CHECK "-Os")
216237
set(CMAKE_C_FLAGS_CHECKFULL "${CMAKE_C_FLAGS_CHECK} -Wcast-qual")
217238
endif(CMAKE_COMPILER_IS_GNU)
218239

219240
if(CMAKE_COMPILER_IS_CLANG)
220-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wwrite-strings -Wpointer-arith -Wimplicit-fallthrough -Wshadow -Wvla -Wformat=2 -Wno-format-nonliteral")
241+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wwrite-strings -Wmissing-prototypes -Wpointer-arith -Wimplicit-fallthrough -Wshadow -Wvla -Wformat=2 -Wno-format-nonliteral")
221242
set(CMAKE_C_FLAGS_RELEASE "-O2")
222243
set(CMAKE_C_FLAGS_DEBUG "-O0 -g3")
223244
set(CMAKE_C_FLAGS_COVERAGE "-O0 -g3 --coverage")
224245
set(CMAKE_C_FLAGS_ASAN "-fsanitize=address -fno-common -fsanitize=undefined -fno-sanitize-recover=all -O3")
225246
set(CMAKE_C_FLAGS_ASANDBG "-fsanitize=address -fno-common -fsanitize=undefined -fno-sanitize-recover=all -O1 -g3 -fno-omit-frame-pointer -fno-optimize-sibling-calls")
226247
set(CMAKE_C_FLAGS_MEMSAN "-fsanitize=memory -O3")
227248
set(CMAKE_C_FLAGS_MEMSANDBG "-fsanitize=memory -O1 -g3 -fno-omit-frame-pointer -fno-optimize-sibling-calls -fsanitize-memory-track-origins=2")
249+
set(CMAKE_C_FLAGS_TSAN "-fsanitize=thread -O3")
250+
set(CMAKE_C_FLAGS_TSANDBG "-fsanitize=thread -O1 -g3 -fno-omit-frame-pointer -fno-optimize-sibling-calls")
228251
set(CMAKE_C_FLAGS_CHECK "-Os")
229252
endif(CMAKE_COMPILER_IS_CLANG)
230253

@@ -258,6 +281,15 @@ if(MBEDTLS_FATAL_WARNINGS)
258281
endif(CMAKE_COMPILER_IS_IAR)
259282
endif(MBEDTLS_FATAL_WARNINGS)
260283

284+
if(CMAKE_BUILD_TYPE STREQUAL "Check" AND TEST_CPP)
285+
set(CMAKE_CXX_STANDARD 11)
286+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
287+
set(CMAKE_CXX_EXTENSIONS OFF)
288+
if(CMAKE_COMPILER_IS_CLANG OR CMAKE_COMPILER_IS_GNU)
289+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic")
290+
endif()
291+
endif()
292+
261293
if(CMAKE_BUILD_TYPE STREQUAL "Coverage")
262294
if(CMAKE_COMPILER_IS_GNU OR CMAKE_COMPILER_IS_CLANG)
263295
set(CMAKE_SHARED_LINKER_FLAGS "--coverage")
@@ -274,6 +306,8 @@ add_subdirectory(3rdparty)
274306

275307
add_subdirectory(library)
276308

309+
add_subdirectory(pkgconfig)
310+
277311
#
278312
# The C files in tests/src directory contain test code shared among test suites
279313
# and programs. This shared test code is compiled and linked to test suites and
@@ -293,10 +327,43 @@ if(ENABLE_TESTING OR ENABLE_PROGRAMS)
293327
${CMAKE_CURRENT_SOURCE_DIR}/tests/src/*.c
294328
${CMAKE_CURRENT_SOURCE_DIR}/tests/src/drivers/*.c)
295329
add_library(mbedtls_test OBJECT ${MBEDTLS_TEST_FILES})
330+
if(GEN_FILES)
331+
add_custom_command(
332+
OUTPUT
333+
${CMAKE_CURRENT_SOURCE_DIR}/tests/src/test_keys.h
334+
WORKING_DIRECTORY
335+
${CMAKE_CURRENT_SOURCE_DIR}/tests
336+
COMMAND
337+
"${MBEDTLS_PYTHON_EXECUTABLE}"
338+
"${CMAKE_CURRENT_SOURCE_DIR}/framework/scripts/generate_test_keys.py"
339+
"--output"
340+
"${CMAKE_CURRENT_SOURCE_DIR}/tests/src/test_keys.h"
341+
DEPENDS
342+
${CMAKE_CURRENT_SOURCE_DIR}/framework/scripts/generate_test_keys.py
343+
)
344+
add_custom_target(test_keys_header DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/tests/src/test_keys.h)
345+
add_custom_command(
346+
OUTPUT
347+
${CMAKE_CURRENT_SOURCE_DIR}/tests/src/test_certs.h
348+
WORKING_DIRECTORY
349+
${CMAKE_CURRENT_SOURCE_DIR}/tests
350+
COMMAND
351+
"${MBEDTLS_PYTHON_EXECUTABLE}"
352+
"${CMAKE_CURRENT_SOURCE_DIR}/framework/scripts/generate_test_cert_macros.py"
353+
"--output"
354+
"${CMAKE_CURRENT_SOURCE_DIR}/tests/src/test_certs.h"
355+
DEPENDS
356+
${CMAKE_CURRENT_SOURCE_DIR}/framework/scripts/generate_test_cert_macros.py
357+
)
358+
add_custom_target(test_certs_header DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/tests/src/test_certs.h)
359+
add_dependencies(mbedtls_test test_keys_header test_certs_header)
360+
endif()
296361
target_include_directories(mbedtls_test
297362
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/tests/include
298363
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
299364
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/library)
365+
# Request C11, needed for memory poisoning tests
366+
set_target_properties(mbedtls_test PROPERTIES C_STANDARD 11)
300367

301368
file(GLOB MBEDTLS_TEST_HELPER_FILES
302369
${CMAKE_CURRENT_SOURCE_DIR}/tests/src/test_helpers/*.c)
@@ -377,7 +444,7 @@ if(NOT DISABLE_PACKAGE_CONFIG_AND_INSTALL)
377444
write_basic_package_version_file(
378445
"cmake/MbedTLSConfigVersion.cmake"
379446
COMPATIBILITY SameMajorVersion
380-
VERSION 3.5.2)
447+
VERSION 3.6.1)
381448

382449
install(
383450
FILES "${CMAKE_CURRENT_BINARY_DIR}/cmake/MbedTLSConfig.cmake"

CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ License and Copyright
8686

8787
Unless specifically indicated otherwise in a file, Mbed TLS files are provided under a dual [Apache-2.0](https://spdx.org/licenses/Apache-2.0.html) OR [GPL-2.0-or-later](https://spdx.org/licenses/GPL-2.0-or-later.html) license. See the [LICENSE](LICENSE) file for the full text of these licenses. This means that users may choose which of these licenses they take the code under.
8888

89-
Contributors must accept that their contributions are made under both the Apache-2.0 AND [GPL-2.0-or-later](https://spdx.org/licenses/GPL-2.0-or-later.html) licenses. This enables LTS (Long Term Support) branches of the software to be provided under either the Apache-2.0 or GPL-2.0-or-later licenses.
89+
Contributors must accept that their contributions are made under both the Apache-2.0 AND [GPL-2.0-or-later](https://spdx.org/licenses/GPL-2.0-or-later.html) licenses.
9090

9191
All new files should include the standard SPDX license identifier where possible, i.e. "SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later".
9292

0 commit comments

Comments
 (0)