asn1_tests: Implement negative unit-tests for ber_write_OID_String()
authorKamen Mazdrashki <kamenim@samba.org>
Wed, 20 Oct 2010 10:46:34 +0000 (13:46 +0300)
committerKamen Mazdrashki <kamenim@samba.org>
Thu, 21 Oct 2010 22:48:58 +0000 (01:48 +0300)
lib/util/tests/asn1_tests.c

index b11e9d5dcf202bd28c80435f38d2987e12f57209..97f77565901a35c5095a9ce74409b469956e787e 100644 (file)
@@ -64,6 +64,17 @@ static const struct oid_data oid_data_ok[] = {
        },
 };
 
+/* Data for successful OIDs conversions */
+static const char *oid_data_err[] = {
+               "",             /* empty OID */
+               ".2.5.4.130",   /* first sub-identifier is empty */
+               "2.5.4.130.",   /* last sub-identifier is empty */
+               "2..5.4.130",   /* second sub-identifier is empty */
+               "2.5..4.130",   /* third sub-identifier is empty */
+               "2.abc.4.130",  /* invalid sub-identifier */
+               "2.5abc.4.130", /* invalid sub-identifier (alpha-numeric)*/
+};
+
 /* Data for successful Partial OIDs conversions */
 static const struct oid_data partial_oid_data_ok[] = {
        {
@@ -104,6 +115,7 @@ static bool test_ber_write_OID_String(struct torture_context *tctx)
 
        mem_ctx = talloc_new(tctx);
 
+       /* check for valid OIDs */
        for (i = 0; i < ARRAY_SIZE(oid_data_ok); i++) {
                torture_assert(tctx, ber_write_OID_String(mem_ctx, &blob, data[i].oid),
                                "ber_write_OID_String failed");
@@ -117,6 +129,16 @@ static bool test_ber_write_OID_String(struct torture_context *tctx)
                                                data[i].oid, data[i].bin_oid));
        }
 
+       /* check for invalid OIDs */
+       for (i = 0; i < ARRAY_SIZE(oid_data_err); i++) {
+               torture_assert(tctx,
+                              !ber_write_OID_String(mem_ctx, &blob, oid_data_err[i]),
+                              talloc_asprintf(mem_ctx,
+                                              "Should fail for [%s] -> %s",
+                                              oid_data_err[i],
+                                              hex_encode_talloc(mem_ctx, blob.data, blob.length)));
+       }
+
        talloc_free(mem_ctx);
 
        return true;