aboutsummaryrefslogtreecommitdiff
path: root/src/test/test_pem.c
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2020-03-11 09:40:04 -0400
committerNick Mathewson <nickm@torproject.org>2020-03-11 10:35:17 -0400
commit5721ec22d8be99a6f24fa69d51d0cbdc4ff21739 (patch)
tree90902ecae014677c19b1fa20428c95a421b64371 /src/test/test_pem.c
parentb9c7c61ea5233854ff83257a8bc530b7e0a50351 (diff)
downloadtor-5721ec22d8be99a6f24fa69d51d0cbdc4ff21739.tar.gz
tor-5721ec22d8be99a6f24fa69d51d0cbdc4ff21739.zip
pem_decode(): Tolerate CRLF line endings
Fixes bug 33032; bugfix on 0.3.5.1-alpha when we introduced our own PEM decoder.
Diffstat (limited to 'src/test/test_pem.c')
-rw-r--r--src/test/test_pem.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/test/test_pem.c b/src/test/test_pem.c
index 865688b1a7..9eb99181e2 100644
--- a/src/test/test_pem.c
+++ b/src/test/test_pem.c
@@ -115,8 +115,38 @@ test_crypto_pem_decode(void *arg)
;
}
+static void
+test_crypto_pem_decode_crlf(void *arg)
+{
+ (void)arg;
+ char crlf_version[4096];
+ uint8_t buf[4096];
+
+ /* Convert 'expected' to a version with CRLF instead of LF. */
+ const char *inp = expected;
+ char *outp = crlf_version;
+ while (*inp) {
+ if (*inp == '\n') {
+ *outp++ = '\r';
+ }
+ *outp++ = *inp++;
+ }
+ *outp = 0;
+
+ /* Decoding should succeed (or else we have bug 33032 again) */
+ int n = pem_decode(buf, sizeof(buf),
+ crlf_version, strlen(crlf_version),
+ "WOMBAT QUOTE");
+ tt_int_op(n, OP_EQ, strlen(example_pre));
+ tt_mem_op(buf, OP_EQ, example_pre, n);
+
+ done:
+ ;
+}
+
struct testcase_t pem_tests[] = {
{ "encode", test_crypto_pem_encode, 0, NULL, NULL },
{ "decode", test_crypto_pem_decode, 0, NULL, NULL },
+ { "decode_crlf", test_crypto_pem_decode_crlf, 0, NULL, NULL },
END_OF_TESTCASES
};