Skip to content

Commit 60eb5d0

Browse files
authored
Merge pull request #454 from libtom/pr/wycheproof-padding
Wycheproof failing PKCS7 depadding test
2 parents 332f66d + dee704d commit 60eb5d0

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

src/misc/padding/padding_depad.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ int padding_depad(const unsigned char *data, unsigned long *length, unsigned lon
3636
if (type < LTC_PAD_ONE_AND_ZERO) {
3737
pad = data[padded_length - 1];
3838

39-
if (pad > padded_length) return CRYPT_INVALID_ARG;
39+
if (pad > padded_length || pad == 0) return CRYPT_INVALID_ARG;
4040

4141
unpadded_length = padded_length - pad;
4242
} else {

tests/padding_test.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,15 @@ int padding_test(void)
194194
}
195195
}
196196

197+
/* wycheproof failing test - https://github.com/libtom/libtomcrypt/pull/454 */
198+
{
199+
unsigned char data[] = { 0x47,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 };
200+
unsigned long len = sizeof(data);
201+
int err;
202+
203+
err = padding_depad(data, &len, (LTC_PAD_PKCS7 | 16));
204+
if (err == CRYPT_OK) return CRYPT_FAIL_TESTVECTOR; /* should fail */
205+
}
197206

198207
return CRYPT_OK;
199208
}

0 commit comments

Comments
 (0)