libtasn1-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[SCM] GNU libtasn1 branch, master, updated. libtasn1_4_9-23-gd8e5dd9


From: Nikos Mavrogiannopoulos
Subject: [SCM] GNU libtasn1 branch, master, updated. libtasn1_4_9-23-gd8e5dd9
Date: Wed, 26 Oct 2016 05:36:32 +0000 (UTC)

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU libtasn1".

http://git.savannah.gnu.org/cgit/libtasn1.git/commit/?id=d8e5dd9454d89347efc1895f833bf459fa68a311

The branch, master has been updated
       via  d8e5dd9454d89347efc1895f833bf459fa68a311 (commit)
       via  bea43c782171c0c3f7463f38ee3b221b8e80f128 (commit)
       via  903bcd40b162eec7dc78e7305871a658e38a3de3 (commit)
      from  e198d72073cafa499cc1f8629e7c2d57163d8e12 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit d8e5dd9454d89347efc1895f833bf459fa68a311
Author: Nikos Mavrogiannopoulos <address@hidden>
Date:   Mon Oct 24 18:57:43 2016 +0200

    tests: added copyright statements to files

-----------------------------------------------------------------------

Summary of changes:
 lib/element.c               |    6 +-
 tests/Makefile.am           |   10 ++-
 tests/mscat.asn             |   34 ++++++++++
 tests/ocsp-basic-response.c |   20 ++++++
 tests/spc_pe_image_data.c   |  148 +++++++++++++++++++++++++++++++++++++++++++
 tests/spc_pe_image_data.der |  Bin 0 -> 40 bytes
 6 files changed, 213 insertions(+), 5 deletions(-)
 create mode 100644 tests/mscat.asn
 create mode 100644 tests/spc_pe_image_data.c
 create mode 100644 tests/spc_pe_image_data.der

diff --git a/lib/element.c b/lib/element.c
index 3ae7740..756e41a 100644
--- a/lib/element.c
+++ b/lib/element.c
@@ -753,7 +753,8 @@ asn1_write_value (asn1_node node_root, const char *name,
  *   %ASN1_VALUE_NOT_FOUND if there isn't any value for the element
  *   selected, and %ASN1_MEM_ERROR if The value vector isn't big enough
  *   to store the result, and in this case @len will contain the number of
- *   bytes needed.
+ *   bytes needed. On the occasion that the stored data are of zero-length
+ *   this function may return %ASN1_SUCCESS even if the provided @len is zero.
  **/
 int
 asn1_read_value (asn1_node root, const char *name, void *ivalue, int *len)
@@ -826,7 +827,8 @@ asn1_read_value (asn1_node root, const char *name, void 
*ivalue, int *len)
  *   %ASN1_VALUE_NOT_FOUND if there isn't any value for the element
  *   selected, and %ASN1_MEM_ERROR if The value vector isn't big enough
  *   to store the result, and in this case @len will contain the number of
- *   bytes needed.
+ *   bytes needed. On the occasion that the stored data are of zero-length
+ *   this function may return %ASN1_SUCCESS even if the provided @len is zero.
  **/
 int
 asn1_read_value_type (asn1_node root, const char *name, void *ivalue,
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 379525e..0d8fcb1 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -25,7 +25,7 @@ LDADD = ../lib/libtasn1.la ../gl/libgnu.la
 EXTRA_DIST = Test_parser.asn Test_tree.asn Test_tree_asn1_tab.c        \
        Test_encoding.asn pkix.asn TestIndef.p12 choice.asn 
coding-decoding2.asn \
        TestIndef2.p12 TestIndef3.der TestCertOctetOverflow.der \
-       libtasn1.supp ocsp-basic-response.der \
+       libtasn1.supp ocsp-basic-response.der spc_pe_image_data.der \
        invalid-x509/id-000000.der invalid-x509/id-000001.der \
        invalid-x509/id-000002.der invalid-x509/id-000003.der \
        invalid-x509/id-000004.der invalid-x509/id-000005.der \
@@ -54,13 +54,15 @@ MOSTLYCLEANFILES = Test_parser_ERROR.asn
 check_PROGRAMS = Test_parser Test_tree Test_encoding Test_indefinite \
        Test_errors Test_simple Test_overflow Test_strings Test_choice \
        Test_encdec copynode coding-decoding2 strict-der Test_choice_ocsp \
-       ocsp-basic-response octet-string coding-long-oid object-id-decoding
+       ocsp-basic-response octet-string coding-long-oid object-id-decoding \
+       spc_pe_image_data
 
 TESTS = Test_parser Test_tree Test_encoding Test_indefinite    \
        Test_errors Test_simple Test_overflow crlf threadsafety \
        Test_strings Test_choice Test_encdec copynode coding-decoding2 \
        strict-der Test_choice_ocsp decoding decoding-invalid-x509 \
-       ocsp-basic-response octet-string coding-long-oid object-id-decoding
+       ocsp-basic-response octet-string coding-long-oid object-id-decoding \
+       spc_pe_image_data
 
 TESTS_ENVIRONMENT = \
        ASN1PARSER=$(srcdir)/Test_parser.asn \
@@ -76,6 +78,8 @@ TESTS_ENVIRONMENT = \
        ASN1CHOICE_OCSP=$(srcdir)/pkix.asn \
        ASN1CHOICE_OCSP_DATA=$(srcdir)/ocsp.der \
        ASN1_RESPONSE_OCSP_DATA=$(srcdir)/ocsp-basic-response.der \
+       ASN1_MSCAT=$(srcdir)/mscat.asn \
+       ASN1_SPC_PE_IMAGE_DATA=$(srcdir)/spc_pe_image_data.der \
        THREADSAFETY_FILES=`find $(top_srcdir)/lib -name \*.c` \
        EXEEXT=$(EXEEXT) \
        LSAN_OPTIONS=suppressions=libtasn1.supp \
diff --git a/tests/mscat.asn b/tests/mscat.asn
new file mode 100644
index 0000000..beb69f7
--- /dev/null
+++ b/tests/mscat.asn
@@ -0,0 +1,34 @@
+CATALOG {}
+DEFINITIONS IMPLICIT TAGS ::= -- assuming implicit tags, should try explicit 
too
+
+BEGIN
+
+-- SPC_PE_IMAGE_DATA
+SpcPEImageData ::= SEQUENCE {
+    flags       SpcPeImageFlags DEFAULT includeResources,
+    link        [0] EXPLICIT SpcLink OPTIONAL
+}
+
+SpcPeImageFlags ::= BIT STRING {
+    includeResources            (0),
+    includeDebugInfo            (1),
+    includeImportAddressTable   (2)
+}
+
+SpcLink ::= CHOICE {
+    url         [0]    IMPLICIT IA5String,
+    moniker     [1]    IMPLICIT SpcSerializedObject,
+    file        [2]    EXPLICIT SpcString
+}
+
+SpcSerializedObject ::= SEQUENCE {
+    classId     OCTET STRING, -- GUID
+    data        OCTET STRING  -- Binary structure
+}
+
+SpcString ::= CHOICE {
+    unicode     [0] IMPLICIT BMPString,
+    ascii       [1] IMPLICIT IA5String
+}
+
+END
diff --git a/tests/ocsp-basic-response.c b/tests/ocsp-basic-response.c
index 54b50ae..18ec394 100644
--- a/tests/ocsp-basic-response.c
+++ b/tests/ocsp-basic-response.c
@@ -1,3 +1,23 @@
+/*
+ * Copyright (C) 2016 Red Hat, Inc.
+ *
+ * This file is part of LIBTASN1.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
diff --git a/tests/spc_pe_image_data.c b/tests/spc_pe_image_data.c
new file mode 100644
index 0000000..a6bff0c
--- /dev/null
+++ b/tests/spc_pe_image_data.c
@@ -0,0 +1,148 @@
+/*
+ * Copyright (C) 2016 Red Hat, Inc.
+ *
+ * This file is part of LIBTASN1.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <libtasn1.h>
+
+int main (int argc, char** argv)
+{
+       int result = 0, len;
+       asn1_node definitions = NULL, node1 = NULL;
+       char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE];
+       const char *choicefile = getenv ("ASN1_MSCAT");
+       const char *datafile = getenv ("ASN1_SPC_PE_IMAGE_DATA");
+       FILE *fp;
+       char data[1024];
+       int data_size = sizeof (data);
+       unsigned etype;
+       int cmp;
+
+       if (choicefile == NULL) {
+               choicefile = "mscat.asn";
+       }
+
+       if (datafile == NULL) {
+               datafile = "spc_pe_image_data.der";
+       }
+
+       result = asn1_parser2tree(choicefile, &definitions, errorDescription);
+       if (result != ASN1_SUCCESS) {
+               fprintf(stderr, "error in %d: %s\n", __LINE__, 
errorDescription);
+               exit (1);
+       }
+
+       result = asn1_create_element(definitions,
+                                    "CATALOG.SpcPEImageData",
+                                    &node1);
+       if (result != ASN1_SUCCESS) {
+               fprintf(stderr, "error in %d\n", __LINE__);
+               exit (1);
+       }
+
+       fp = fopen(datafile, "rb");
+       if (fp == NULL) {
+               fprintf (stderr, "error in %d\n", __LINE__);
+               exit(1);
+       }
+       data_size = fread(data, 1, sizeof(data), fp);
+       fclose(fp);
+
+       result = asn1_der_decoding2(&node1,
+                                   data,
+                                   &data_size,
+                                   ASN1_DECODE_FLAG_STRICT_DER,
+                                   errorDescription);
+       if (result != ASN1_SUCCESS) {
+               fprintf(stderr, "error in %d: decoding: %s\n", __LINE__, 
errorDescription);
+               exit(1);
+       }
+
+       len = 0;
+       result = asn1_read_value_type(node1,
+                                     "flags",
+                                     NULL,
+                                     &len,
+                                     &etype);
+       if (result != ASN1_MEM_ERROR) {
+               fprintf(stderr, "error in %d: %s\n", __LINE__, 
errorDescription);
+               exit(1);
+       }
+
+       if ((size_t)len >= sizeof(data)) {
+               fprintf(stderr,
+                       "error len=%d, sizeof(data)=%zu\n",
+                       len,
+                       sizeof(data));
+               exit(1);
+       }
+
+       result = asn1_read_value(node1, "flags", data, &len);
+       if (result != ASN1_SUCCESS) {
+               fprintf(stderr, "error in %d: %s\n", __LINE__, 
errorDescription);
+               exit (1);
+       }
+
+       etype = 0;
+       len = 0;
+       result = asn1_read_value_type(node1, "link", NULL, &len, &etype);
+       if (result != ASN1_MEM_ERROR)
+       {
+               fprintf(stderr,
+                       "error in %d: result is: %s\n",
+                       __LINE__,
+                       asn1_strerror(result));
+               exit(1);
+       }
+
+       if (etype != ASN1_ETYPE_CHOICE) {
+               fprintf(stderr,
+                       "error in %d: The type (%u) doesn't match choice.\n",
+                       __LINE__,
+                       etype);
+               exit(1);
+       }
+
+       if (len != 5) {
+               fprintf (stderr, "length doesn't match the expected (got: %d, 
should be: 20)\n", len);
+               exit (1);
+       }
+
+       len = sizeof(data);
+       result = asn1_read_value(node1, "link", data, &len);
+       if (result != ASN1_SUCCESS) {
+               fprintf(stderr, "error in %d: %s\n", __LINE__, 
errorDescription);
+               exit (1);
+       }
+
+       cmp = memcmp(data, "file", len);
+       if (cmp != 0) {
+               fprintf(stderr, "contents don't match\n");
+               exit(1);
+       }
+
+       printf("SUCCESS\n");
+
+       asn1_delete_structure (&node1);
+       asn1_delete_structure (&definitions);
+
+       return 0;
+}
diff --git a/tests/spc_pe_image_data.der b/tests/spc_pe_image_data.der
new file mode 100644
index 0000000..0e72dfa
Binary files /dev/null and b/tests/spc_pe_image_data.der differ


hooks/post-receive
-- 
GNU libtasn1



reply via email to

[Prev in Thread] Current Thread [Next in Thread]