* gcc-interface/trans.c (node_has_volatile_full_access) <N_Identifier>:
[official-gcc.git] / gcc / testsuite / gcc.c-torture / compile / pr53886.c
blob89b696635296a7bd88caee38828fb8b37e535a08
1 /* PR target/53886 */
2 typedef struct asn1_string_st ASN1_BIT_STRING;
3 typedef struct bignum_st BIGNUM;
4 typedef struct ec_group_st EC_GROUP;
5 typedef struct ec_key_st EC_KEY;
7 struct ec_key_st
9 EC_GROUP *group;
10 BIGNUM *priv_key;
11 unsigned int enc_flag;
13 X9_62_PENTANOMIAL;
14 typedef struct ec_privatekey_st
16 ASN1_BIT_STRING *publicKey;
18 EC_PRIVATEKEY;
20 extern EC_PRIVATEKEY* EC_PRIVATEKEY_new (void);
21 extern void EC_PRIVATEKEY_free (EC_PRIVATEKEY*);
22 extern unsigned char* CRYPTO_realloc (char*,int,const char*,int);
24 int
25 i2d_ECPrivateKey (EC_KEY * a, unsigned char **out)
27 int ret = 0, ok = 0;
28 unsigned char *buffer = 0;
29 unsigned buf_len = 0, tmp_len;
30 EC_PRIVATEKEY *priv_key = 0;
31 if (a == 0 || a->group == 0 || a->priv_key == 0)
33 ERR_put_error (16, (192), ((3 | 64)),
34 "",
35 1234);
36 goto err;
38 if ((priv_key = EC_PRIVATEKEY_new ()) == 0)
40 ERR_put_error (16, (192), ((1 | 64)),
41 "",
42 1241);
43 goto err;
45 if (!(a->enc_flag & 0x002))
47 if (priv_key->publicKey == 0)
49 goto err;
51 if (tmp_len > buf_len)
53 unsigned char *tmp_buffer =
54 CRYPTO_realloc ((char *) buffer, (int) tmp_len, "", 1293);
55 buffer = tmp_buffer;
58 if ((ret = i2d_EC_PRIVATEKEY (priv_key, out)) == 0)
61 ok = 1;
62 err:
63 if (buffer)
64 CRYPTO_free (buffer);
65 if (priv_key)
66 EC_PRIVATEKEY_free (priv_key);
67 return (ok ? ret : 0);