OpenCoverage

evp_asn1.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/asn1/evp_asn1.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/*-
2 * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.-
3 *-
4 * Licensed under the OpenSSL license (the "License"). You may not use-
5 * this file except in compliance with the License. You can obtain a copy-
6 * in the file LICENSE in the source distribution or at-
7 * https://www.openssl.org/source/license.html-
8 */-
9-
10#include <stdio.h>-
11#include "internal/cryptlib.h"-
12#include <openssl/asn1.h>-
13#include <openssl/asn1t.h>-
14-
15int ASN1_TYPE_set_octetstring(ASN1_TYPE *a, unsigned char *data, int len)-
16{-
17 ASN1_STRING *os;-
18-
19 if ((os = ASN1_OCTET_STRING_new()) == NULL)
(os = ASN1_OCT...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 26 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-26
20 return 0;
never executed: return 0;
0
21 if (!ASN1_OCTET_STRING_set(os, data, len)) {
!ASN1_OCTET_ST...os, data, len)Description
TRUEnever evaluated
FALSEevaluated 26 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-26
22 ASN1_OCTET_STRING_free(os);-
23 return 0;
never executed: return 0;
0
24 }-
25 ASN1_TYPE_set(a, V_ASN1_OCTET_STRING, os);-
26 return 1;
executed 26 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
26
27}-
28-
29/* int max_len: for returned value */-
30int ASN1_TYPE_get_octetstring(const ASN1_TYPE *a, unsigned char *data, int max_len)-
31{-
32 int ret, num;-
33 const unsigned char *p;-
34-
35 if ((a->type != V_ASN1_OCTET_STRING) || (a->value.octet_string == NULL)) {
(a->type != 4)Description
TRUEnever evaluated
FALSEevaluated 26 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
(a->value.octe... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 26 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-26
36 ASN1err(ASN1_F_ASN1_TYPE_GET_OCTETSTRING, ASN1_R_DATA_IS_WRONG);-
37 return -1;
never executed: return -1;
0
38 }-
39 p = ASN1_STRING_get0_data(a->value.octet_string);-
40 ret = ASN1_STRING_length(a->value.octet_string);-
41 if (ret < max_len)
ret < max_lenDescription
TRUEnever evaluated
FALSEevaluated 26 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-26
42 num = ret;
never executed: num = ret;
0
43 else-
44 num = max_len;
executed 26 times by 1 test: num = max_len;
Executed by:
  • libcrypto.so.1.1
26
45 memcpy(data, p, num);-
46 return ret;
executed 26 times by 1 test: return ret;
Executed by:
  • libcrypto.so.1.1
26
47}-
48-
49typedef struct {-
50 int32_t num;-
51 ASN1_OCTET_STRING *oct;-
52} asn1_int_oct;-
53-
54ASN1_SEQUENCE(asn1_int_oct) = {-
55 ASN1_EMBED(asn1_int_oct, num, INT32),-
56 ASN1_SIMPLE(asn1_int_oct, oct, ASN1_OCTET_STRING)-
57} static_ASN1_SEQUENCE_END(asn1_int_oct)-
58-
59DECLARE_ASN1_ITEM(asn1_int_oct)-
60-
61int ASN1_TYPE_set_int_octetstring(ASN1_TYPE *a, long num, unsigned char *data,-
62 int len)-
63{-
64 asn1_int_oct atmp;-
65 ASN1_OCTET_STRING oct;-
66-
67 atmp.num = num;-
68 atmp.oct = &oct;-
69 oct.data = data;-
70 oct.type = V_ASN1_OCTET_STRING;-
71 oct.length = len;-
72 oct.flags = 0;-
73-
74 if (ASN1_TYPE_pack_sequence(ASN1_ITEM_rptr(asn1_int_oct), &atmp, &a))
ASN1_TYPE_pack...)), &atmp, &a)Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-2
75 return 1;
executed 2 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
2
76 return 0;
never executed: return 0;
0
77}-
78-
79/*-
80 * we return the actual length...-
81 */-
82/* int max_len: for returned value */-
83int ASN1_TYPE_get_int_octetstring(const ASN1_TYPE *a, long *num,-
84 unsigned char *data, int max_len)-
85{-
86 asn1_int_oct *atmp = NULL;-
87 int ret = -1, n;-
88-
89 if ((a->type != V_ASN1_SEQUENCE) || (a->value.sequence == NULL)) {
(a->type != 16)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
(a->value.sequ... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-2
90 goto err;
never executed: goto err;
0
91 }-
92-
93 atmp = ASN1_TYPE_unpack_sequence(ASN1_ITEM_rptr(asn1_int_oct), a);-
94-
95 if (atmp == NULL)
atmp == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-2
96 goto err;
never executed: goto err;
0
97-
98 if (num != NULL)
num != ((void *)0)Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-2
99 *num = atmp->num;
executed 2 times by 1 test: *num = atmp->num;
Executed by:
  • libcrypto.so.1.1
2
100-
101 ret = ASN1_STRING_length(atmp->oct);-
102 if (max_len > ret)
max_len > retDescription
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-2
103 n = ret;
never executed: n = ret;
0
104 else-
105 n = max_len;
executed 2 times by 1 test: n = max_len;
Executed by:
  • libcrypto.so.1.1
2
106-
107 if (data != NULL)
data != ((void *)0)Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-2
108 memcpy(data, ASN1_STRING_get0_data(atmp->oct), n);
executed 2 times by 1 test: memcpy(data, ASN1_STRING_get0_data(atmp->oct), n);
Executed by:
  • libcrypto.so.1.1
2
109 if (ret == -1) {
ret == -1Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-2
110 err:-
111 ASN1err(ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING, ASN1_R_DATA_IS_WRONG);-
112 }
never executed: end of block
0
113 M_ASN1_free_of(atmp, asn1_int_oct);-
114 return ret;
executed 2 times by 1 test: return ret;
Executed by:
  • libcrypto.so.1.1
2
115}-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2