Skip to content

Commit f6900d5

Browse files
committed
More CI and peer review fixes
1 parent ca166b0 commit f6900d5

4 files changed

Lines changed: 31 additions & 19 deletions

File tree

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -562,7 +562,7 @@ if(WOLFTPM_FWTPM)
562562
enable_testing()
563563
add_test(NAME fwtpm_unit_test
564564
COMMAND fwtpm_unit_test
565-
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
565+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
566566
)
567567

568568
message(STATUS "fwTPM server: enabled")

src/tpm2_packet.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -591,8 +591,12 @@ void TPM2_Packet_ParsePCR(TPM2_Packet* packet, TPML_PCR_SELECTION* pcr)
591591
}
592592
}
593593
/* Skip remaining wire entries beyond the capped loop so packet->pos
594-
* stays synchronized with the wire format for subsequent parsing */
594+
* stays synchronized with the wire format for subsequent parsing.
595+
* Break when the packet is exhausted to avoid spinning on an
596+
* attacker-controlled wireCount (same threat as the first loop). */
595597
for (; i < (int)wireCount; i++) {
598+
if (packet == NULL || packet->pos >= packet->size)
599+
break;
596600
TPM2_Packet_ParseU16(packet, &hash);
597601
TPM2_Packet_ParseU8(packet, &wireSizeofSelect);
598602
TPM2_Packet_ParseBytes(packet, NULL, wireSizeofSelect);

src/tpm2_wrap.c

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1763,7 +1763,7 @@ int wolfTPM2_SetAuthHandle(WOLFTPM2_DEV* dev, int index,
17631763
handle->auth.size);
17641764
session->name.size = handle->name.size;
17651765
if (session->name.size > sizeof(session->name.name)) {
1766-
session->name.size = sizeof(session->name.name); /* truncate */
1766+
return BUFFER_E;
17671767
}
17681768
XMEMCPY(session->name.name, handle->name.name, session->name.size);
17691769
return TPM_RC_SUCCESS;
@@ -1824,7 +1824,7 @@ int wolfTPM2_SetAuthHandleName(WOLFTPM2_DEV* dev, int index,
18241824
}
18251825
session->name.size = name->size;
18261826
if (session->name.size > sizeof(session->name.name)) {
1827-
session->name.size = sizeof(session->name.name); /* truncate */
1827+
return BUFFER_E;
18281828
}
18291829
XMEMCPY(session->name.name, name->name, session->name.size);
18301830

@@ -2229,7 +2229,9 @@ static int wolfTPM2_EncryptSecret_RSA(WOLFTPM2_DEV* dev, const WOLFTPM2_KEY* tpm
22292229
}
22302230

22312231
wc_FreeRsaKey(&rsaKey);
2232+
TPM2_ForceZero(&rsaKey, sizeof(rsaKey));
22322233
wc_FreeRng(&rng);
2234+
TPM2_ForceZero(&rng, sizeof(rng));
22332235

22342236
if (rc > 0) {
22352237
rc = (rc == secret->size) ? 0 /* success */ : BUFFER_E /* fail */;
@@ -9677,11 +9679,12 @@ int wolfTPM2_FirmwareUpgradeHash(WOLFTPM2_DEV* dev, TPM_ALG_ID hashAlg,
96779679
return TPM_RC_COMMAND_CODE;
96789680
}
96799681

9680-
#if !defined(WOLFTPM2_NO_WOLFCRYPT) && defined(WOLFSSL_SHA384)
9682+
#ifndef WOLFTPM2_NO_WOLFCRYPT
96819683
int wolfTPM2_FirmwareUpgrade(WOLFTPM2_DEV* dev,
96829684
uint8_t* manifest, uint32_t manifest_sz,
96839685
wolfTPM2FwDataCb cb, void* cb_ctx)
96849686
{
9687+
#ifdef WOLFSSL_SHA384
96859688
int rc;
96869689
uint8_t manifest_hash[TPM_SHA384_DIGEST_SIZE];
96879690

@@ -9693,6 +9696,11 @@ int wolfTPM2_FirmwareUpgrade(WOLFTPM2_DEV* dev,
96939696
manifest, manifest_sz, cb, cb_ctx);
96949697
}
96959698
return rc;
9699+
#else
9700+
(void)dev; (void)manifest; (void)manifest_sz;
9701+
(void)cb; (void)cb_ctx;
9702+
return NOT_COMPILED_IN;
9703+
#endif
96969704
}
96979705
#endif
96989706

tests/fwtpm_check.sh

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -103,10 +103,10 @@ check_wolfssl_options() {
103103
local opts_file
104104
opts_file=$(find_wolfssl_options "$base")
105105
[ -n "$opts_file" ] || return 1
106-
grep -q "HAVE_PK_CALLBACKS" "$opts_file" && \
107-
grep -q "WOLFSSL_KEY_GEN" "$opts_file" && \
108-
grep -q "WOLFSSL_PUBLIC_MP" "$opts_file" && \
109-
grep -q "WC_RSA_NO_PADDING" "$opts_file"
106+
grep -q "^#define HAVE_PK_CALLBACKS" "$opts_file" && \
107+
grep -q "^#define WOLFSSL_KEY_GEN" "$opts_file" && \
108+
grep -q "^#define WOLFSSL_PUBLIC_MP" "$opts_file" && \
109+
grep -q "^#define WC_RSA_NO_PADDING" "$opts_file"
110110
}
111111

112112
ensure_wolfssl() {
@@ -171,13 +171,13 @@ IS_FWTPM_MODE=0
171171
HAS_GETENV=1
172172
WOLFTPM_OPTIONS="$BUILD_DIR/wolftpm/options.h"
173173
if [ -f "$WOLFTPM_OPTIONS" ]; then
174-
if grep -q "WOLFTPM_SWTPM" "$WOLFTPM_OPTIONS"; then
174+
if grep -q "^#define WOLFTPM_SWTPM" "$WOLFTPM_OPTIONS"; then
175175
IS_SWTPM_MODE=1
176176
fi
177-
if grep -q "WOLFTPM_FWTPM_BUILD" "$WOLFTPM_OPTIONS"; then
177+
if grep -q "^#define WOLFTPM_FWTPM_BUILD" "$WOLFTPM_OPTIONS"; then
178178
IS_FWTPM_MODE=1
179179
fi
180-
if grep -q "NO_GETENV" "$WOLFTPM_OPTIONS"; then
180+
if grep -q "^#define NO_GETENV" "$WOLFTPM_OPTIONS"; then
181181
HAS_GETENV=0
182182
fi
183183
fi
@@ -213,7 +213,7 @@ fi
213213
HAS_RSA_NO_PAD=0
214214
for chk_path in "$WOLFSSL_PATH" "/usr/local"; do
215215
opts=$(find_wolfssl_options "$chk_path" 2>/dev/null)
216-
if [ -n "$opts" ] && grep -q "WC_RSA_NO_PADDING" "$opts" 2>/dev/null; then
216+
if [ -n "$opts" ] && grep -q "^#define WC_RSA_NO_PADDING" "$opts" 2>/dev/null; then
217217
HAS_RSA_NO_PAD=1
218218
break
219219
fi
@@ -236,7 +236,7 @@ NO_PUBASPRIV=${NO_PUBASPRIV:-0}
236236
WOLFCRYPT_DEFAULT=${WOLFCRYPT_DEFAULT:-0}
237237

238238
# Detect from wolftpm/options.h
239-
if [ -f "$WOLFTPM_OPTIONS" ] && grep -q "WOLFTPM2_NO_WOLFCRYPT" "$WOLFTPM_OPTIONS"; then
239+
if [ -f "$WOLFTPM_OPTIONS" ] && grep -q "^#define WOLFTPM2_NO_WOLFCRYPT" "$WOLFTPM_OPTIONS"; then
240240
WOLFCRYPT_ENABLE=0
241241
fi
242242

@@ -249,11 +249,11 @@ for chk in /usr/local "$WOLFSSL_PATH"; do
249249
done
250250

251251
if [ -n "$WOLFSSL_OPTS" ]; then
252-
grep -q "NO_RSA" "$WOLFSSL_OPTS" && WOLFCRYPT_RSA=0
253-
grep -q "HAVE_ECC" "$WOLFSSL_OPTS" || WOLFCRYPT_ECC=0
254-
grep -q "NO_FILESYSTEM" "$WOLFSSL_OPTS" && NO_FILESYSTEM=1
255-
grep -q "WOLFSSL_PUBLIC_ASN_PRIV_KEY" "$WOLFSSL_OPTS" || NO_PUBASPRIV=1
256-
grep -q "WOLFSSL_AES_CFB" "$WOLFSSL_OPTS" || WOLFCRYPT_DEFAULT=1
252+
grep -q "^#define NO_RSA" "$WOLFSSL_OPTS" && WOLFCRYPT_RSA=0
253+
grep -q "^#define HAVE_ECC" "$WOLFSSL_OPTS" || WOLFCRYPT_ECC=0
254+
grep -q "^#define NO_FILESYSTEM" "$WOLFSSL_OPTS" && NO_FILESYSTEM=1
255+
grep -q "^#define WOLFSSL_PUBLIC_ASN_PRIV_KEY" "$WOLFSSL_OPTS" || NO_PUBASPRIV=1
256+
grep -q "^#define WOLFSSL_AES_CFB" "$WOLFSSL_OPTS" || WOLFCRYPT_DEFAULT=1
257257
fi
258258

259259
# --- Determine port and start/detect server ---

0 commit comments

Comments
 (0)