projects
/
openssl.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
62e3163
)
treat 'out' like i2d functions do; cf. asn1_item_flags_i2d (crypto/asn/tasn_enc.c)
author
Bodo Möller
<bodo@openssl.org>
Fri, 21 Feb 2003 16:06:39 +0000
(16:06 +0000)
committer
Bodo Möller
<bodo@openssl.org>
Fri, 21 Feb 2003 16:06:39 +0000
(16:06 +0000)
crypto/ec/ec_asn1.c
patch
|
blob
|
history
diff --git
a/crypto/ec/ec_asn1.c
b/crypto/ec/ec_asn1.c
index 927a3716cff251e439e5154d96acfc3ccf9fb5bd..f31ac45d99a1d65753e5b62264a3a874dee88a19 100644
(file)
--- a/
crypto/ec/ec_asn1.c
+++ b/
crypto/ec/ec_asn1.c
@@
-1437,7
+1437,8
@@
EC_KEY *o2i_ECPublicKey(EC_KEY **a, const unsigned char **in, long len)
int i2o_ECPublicKey(EC_KEY *a, unsigned char **out)
{
int i2o_ECPublicKey(EC_KEY *a, unsigned char **out)
{
- size_t buf_len=0;
+ size_t buf_len=0;
+ int new_buffer = 0;
if (a == NULL)
{
if (a == NULL)
{
@@
-1453,11
+1454,14
@@
int i2o_ECPublicKey(EC_KEY *a, unsigned char **out)
return buf_len;
if (*out == NULL)
return buf_len;
if (*out == NULL)
+ {
if ((*out = OPENSSL_malloc(buf_len)) == NULL)
{
ECerr(EC_F_I2O_ECPUBLICKEY, ERR_R_MALLOC_FAILURE);
return 0;
}
if ((*out = OPENSSL_malloc(buf_len)) == NULL)
{
ECerr(EC_F_I2O_ECPUBLICKEY, ERR_R_MALLOC_FAILURE);
return 0;
}
+ new_buffer = 1;
+ }
if (!EC_POINT_point2oct(a->group, a->pub_key, a->conv_form,
*out, buf_len, NULL))
{
if (!EC_POINT_point2oct(a->group, a->pub_key, a->conv_form,
*out, buf_len, NULL))
{
@@
-1466,6
+1470,7
@@
int i2o_ECPublicKey(EC_KEY *a, unsigned char **out)
*out = NULL;
return 0;
}
*out = NULL;
return 0;
}
- *out += buf_len;
+ if (!new_buffer)
+ *out += buf_len;
return buf_len;
}
return buf_len;
}