summaryrefslogtreecommitdiffstats
path: root/crypto/asn1/tasn_new.c
AgeCommit message (Collapse)Author
2017-10-24asn1_item_embed_new(): if locking failed, don't call asn1_item_embed_free()Richard Levitte
asn1_item_embed_free() will try unlocking and fail in this case, and since the new item was just allocated on the heap, free it directly with OPENSSL_free() instead. Reviewed-by: Rich Salz <rsalz@openssl.org> Reviewed-by: Bernd Edlinger <bernd.edlinger@hotmail.de> (Merged from https://github.com/openssl/openssl/pull/4579)
2017-10-24asn1_item_embed_new(): don't free an embedded itemRichard Levitte
The previous change with this intention didn't quite do it. An embedded item must not be freed itself, but might potentially contain non-embedded elements, which must be freed. So instead of calling ASN1_item_ex_free(), where we can't pass the embed flag, we call asn1_item_embed_free() directly. This changes asn1_item_embed_free() from being a static function to being a private non-static function. Reviewed-by: Rich Salz <rsalz@openssl.org> Reviewed-by: Bernd Edlinger <bernd.edlinger@hotmail.de> (Merged from https://github.com/openssl/openssl/pull/4579)
2017-10-23asn1_item_embed_new(): don't free an embedded itemRichard Levitte
An embedded item wasn't allocated separately on the heap, so don't free it as if it was. Issue discovered by Pavel Kopyl Reviewed-by: Matt Caswell <matt@openssl.org> (Merged from https://github.com/openssl/openssl/pull/4572)
2017-04-13ASN.1: extend the possibilities to embed data instead of pointersRichard Levitte
Also, when "allocating" or "deallocating" an embedded item, never call prim_new() or prim_free(). Call prim_clear() instead. Fixes #3191 Reviewed-by: Matt Caswell <matt@openssl.org> (Merged from https://github.com/openssl/openssl/pull/3199)
2017-02-03Combined patch against master branch for the following issues:Bernd Edlinger
Fixed a memory leak in ASN1_digest and ASN1_item_digest. Reworked error handling in asn1_item_embed_new. Fixed error handling in int_ctx_new and EVP_PKEY_CTX_dup. Fixed a memory leak in CRYPTO_free_ex_data. Reworked error handing in x509_name_ex_d2i, x509_name_encode and x509_name_canon. Check for null pointer in tls_process_cert_verify. Fixes #2103 #2104 #2105 #2109 #2111 #2115 Reviewed-by: Rich Salz <rsalz@openssl.org> Reviewed-by: Richard Levitte <levitte@openssl.org> (Merged from https://github.com/openssl/openssl/pull/2342)
2016-06-23Rework error handling from asn1_do_lock method.FdaSilvaYY
Reviewed-by: Rich Salz <rsalz@openssl.org> Reviewed-by: Matt Caswell <matt@openssl.org>
2016-05-17Copyright consolidation 08/10Rich Salz
Reviewed-by: Richard Levitte <levitte@openssl.org>
2016-01-26Remove /* foo.c */ commentsRich Salz
This was done by the following find . -name '*.[ch]' | /tmp/pl where /tmp/pl is the following three-line script: print unless $. == 1 && m@/\* .*\.[ch] \*/@; close ARGV if eof; # Close file to reset $. And then some hand-editing of other files. Reviewed-by: Viktor Dukhovni <viktor@openssl.org>
2016-01-11Enable/disable crypto-mdebug just like other featuresViktor Dukhovni
Also always abort() on leak failure. Reviewed-by: Stephen Henson <steve@openssl.org>
2015-12-22Cleanup CRYPTO_{push,pop}_infoRich Salz
Rename to OPENSSL_mem_debug_{push,pop}. Remove simple calls; keep only calls used in recursive functions. Ensure we always push, to simplify so that we can always pop Reviewed-by: Richard Levitte <levitte@openssl.org>
2015-11-09Continue standardising malloc style for libcryptoMatt Caswell
Continuing from previous commit ensure our style is consistent for malloc return checks. Reviewed-by: Kurt Roeckx <kurt@openssl.org>
2015-10-18set string type when embeddingDr. Stephen Henson
Reviewed-by: Tim Hudson <tjh@openssl.org>
2015-10-11embed support for ASN1_STRINGDr. Stephen Henson
Reviewed-by: Rich Salz <rsalz@openssl.org>
2015-10-11embed support for CHOICE typeDr. Stephen Henson
Reviewed-by: Rich Salz <rsalz@openssl.org>
2015-09-16New ASN.1 embed macro.Dr. Stephen Henson
New ASN.1 macro ASN1_EMBED. This is the same as ASN1_SIMPLE except the structure is not allocated: it is part of the parent. That is instead of FOO *x; it must be: FOO x; This reduces memory fragmentation and make it impossible to accidentally set a mandatory field to NULL. This currently only works for SEQUENCE and since it is equivalent to ASN1_SIMPLE it cannot be tagged, OPTIONAL, SET OF or SEQUENCE OF. Reviewed-by: Rich Salz <rsalz@openssl.org>
2015-09-02Add and use OPENSSL_zallocRich Salz
There are many places (nearly 50) where we malloc and then memset. Add an OPENSSL_zalloc routine to encapsulate that. (Missed one conversion; thanks Richard) Also fixes GH328 Reviewed-by: Richard Levitte <levitte@openssl.org>
2015-05-04Use safer sizeof variant in mallocRich Salz
For a local variable: TYPE *p; Allocations like this are "risky": p = OPENSSL_malloc(sizeof(TYPE)); if the type of p changes, and the malloc call isn't updated, you could get memory corruption. Instead do this: p = OPENSSL_malloc(sizeof(*p)); Also fixed a few memset() calls that I noticed while doing this. Reviewed-by: Richard Levitte <levitte@openssl.org>
2015-04-10Don't set *pval to NULL in ASN1_item_ex_new.Dr. Stephen Henson
While *pval is usually a pointer in rare circumstances it can be a long value. One some platforms (e.g. WIN64) where sizeof(long) < sizeof(ASN1_VALUE *) this will write past the field. *pval is initialised correctly in the rest of ASN1_item_ex_new so setting it to NULL is unecessary anyway. Thanks to Julien Kauffmann for reporting this issue. Reviewed-by: Richard Levitte <levitte@openssl.org>
2015-03-26Remove combine option from ASN.1 code.Dr. Stephen Henson
Remove the combine option. This was used for compatibility with some non standard behaviour in ancient versions of OpenSSL: specifically the X509_ATTRIBUTE and DSAPublicKey handling. Since these have now been revised it is no longer needed. Reviewed-by: Richard Levitte <levitte@openssl.org>
2015-03-26Move more internal only functions to asn1_locl.hDr. Stephen Henson
Reviewed-by: Matt Caswell <matt@openssl.org>
2015-03-25Move internal only ASN.1 functions to asn1_locl.hDr. Stephen Henson
Reviewed-by: Richard Levitte <levitte@openssl.org>
2015-03-23Remove old style ASN.1 support.Dr. Stephen Henson
Remove old ASN.1 COMPAT type. This was meant as a temporary measure so older ASN.1 code (from OpenSSL 0.9.6) still worked. It's a hack which breaks constification and hopefully nothing uses it now, if it ever did. Reviewed-by: Matt Caswell <matt@openssl.org>
2015-03-12ASN1_primitive_new NULL param handlingMatt Caswell
ASN1_primitive_new takes an ASN1_ITEM * param |it|. There are a couple of conditional code paths that check whether |it| is NULL or not - but later |it| is deref'd unconditionally. If |it| was ever really NULL then this would seg fault. In practice ASN1_primitive_new is marked as an internal function in the public header file. The only places it is ever used internally always pass a non NULL parameter for |it|. Therefore, change the code to sanity check that |it| is not NULL, and remove the conditional checking. Reviewed-by: Rich Salz <rsalz@openssl.org> Reviewed-by: Andy Polyakov <appro@openssl.org>
2015-01-22Run util/openssl-format-source -v -c .Matt Caswell
Reviewed-by: Tim Hudson <tjh@openssl.org>
2009-09-02PR: 2013Dr. Stephen Henson
Submitted by: steve@openssl.org Include a flag ASN1_STRING_FLAG_MSTRING when a multi string type is created. This makes it possible to tell if the underlying type is UTCTime, GeneralizedTime or Time when the structure is reused and X509_time_adj_ex() can handle each case in an appropriate manner. Add error checking to CRL generation in ca utility when nextUpdate is being set.
2008-11-05Update obsolete email address...Dr. Stephen Henson
2006-03-15fix problems found by coverity: remove useless codeNils Larsch
2006-02-15make some internal functions static; patch supplied by Kurt RoeckxNils Larsch
2005-09-01Extend callback function to support print customization.Dr. Stephen Henson
2005-07-26Handle case where it==NULLDr. Stephen Henson
2005-05-11Fix more error codes.Bodo Möller
(Also improve util/ck_errf.pl script, and occasionally fix source code formatting.)
2004-04-25More ASN1 reformat/tidy.Dr. Stephen Henson
2002-11-05Check for NULL ASN1_ITEM when initializeingDr. Stephen Henson
boolean option in ASN1_TYPE.
2002-10-03Preliminary streaming ASN1 encode support.Dr. Stephen Henson
2002-01-29Shut up compiler warnings for inconsistent declarations.Lutz Jänicke
2001-04-02Rewrite CHOICE field setting code to properly handleDr. Stephen Henson
combine in CHOICE options. This was causing d2i_DSAPublicKey() to misbehave.
2001-02-23Initial support for ASN1_ITEM_FUNCTION option toDr. Stephen Henson
change the way ASN1 modules are exported. Still needs a bit of work for example the hack which a dummy function prototype to avoid compilers warning about multiple ;s.
2001-02-16New options to 'ca' utility to support CRL entry extensions.Dr. Stephen Henson
Add revelant new X509V3 extensions. Add OIDs. Fix ASN1 memory leak code to pop info if external allocation used.
2001-02-05Include string.h (whis is in all relevant standards) instead ofBodo Möller
memory.h (which is not).
2001-02-04Fix a warning.Ben Laurie
2001-01-24Add debugging info to new ASN1 code to trace memory leaks.Dr. Stephen Henson
Fix PKCS7 and PKCS12 memory leaks. Initialise encapsulated content type properly.
2000-12-08Merge from the ASN1 branch of new ASN1 codeDr. Stephen Henson
to main trunk. Lets see if the makes it to openssl-cvs :-)