some negative tests of parse_name()

This commit is contained in:
Klas Lindfors
2014-06-24 15:22:33 +02:00
parent 2e8170aa31
commit 7338dcae8a
+20 -5
View File
@@ -27,6 +27,7 @@
*/ */
#include <string.h> #include <string.h>
#include <stdbool.h>
#ifdef _WIN32 #ifdef _WIN32
#include <windows.h> #include <windows.h>
@@ -36,11 +37,21 @@
#include "util.h" #include "util.h"
static void test_name(const char *name, const char *expected) { static void test_name(const char *name, const char *expected, bool fail) {
char buf[1024]; char buf[1024];
X509_NAME *parsed = parse_name(name); BIO *bio;
BIO *bio = BIO_new(BIO_s_mem());
const char none[] = {0}; const char none[] = {0};
X509_NAME *parsed = parse_name(name);
if(parsed == NULL) {
if(fail) {
return;
} else {
printf("Failed parsing of '%s'!\n", name);
exit(EXIT_FAILURE);
}
}
bio = BIO_new(BIO_s_mem());
X509_NAME_print_ex(bio, parsed, 0, XN_FLAG_ONELINE); X509_NAME_print_ex(bio, parsed, 0, XN_FLAG_ONELINE);
BIO_write(bio, none, 1); BIO_write(bio, none, 1);
@@ -54,7 +65,11 @@ static void test_name(const char *name, const char *expected) {
} }
int main(void) { int main(void) {
test_name("/CN=test foo/", "CN = test foo"); test_name("/CN=test foo/", "CN = test foo", false);
test_name("/CN=test/OU=bar/O=EXAMPLE/", "CN = test, OU = bar, O = EXAMPLE"); test_name("/CN=test/OU=bar/O=EXAMPLE/", "CN = test, OU = bar, O = EXAMPLE", false);
test_name("/foo/", "", true);
test_name("/CN=test/foobar/", "", true);
test_name("/CN=test/foo=bar/", "", true);
return EXIT_SUCCESS; return EXIT_SUCCESS;
} }