diff options
author | Lev Walkin <vlm@lionet.info> | 2004-08-11 07:41:45 +0000 |
---|---|---|
committer | Lev Walkin <vlm@lionet.info> | 2004-08-11 07:41:45 +0000 |
commit | 7e0d2cb62c94d8bae2964e55c1f7b35972b258cb (patch) | |
tree | 48d0d43eb060962d6cd3a4914d25378dcdfc160f | |
parent | 659a751cfbc8a13fe370fff95ac3c204b93edb40 (diff) |
portability
-rw-r--r-- | skeletons/OBJECT_IDENTIFIER.c | 1 | ||||
-rw-r--r-- | skeletons/constr_SET.c | 6 | ||||
-rw-r--r-- | skeletons/constraints.c | 2 | ||||
-rw-r--r-- | skeletons/der_encoder.c | 10 |
4 files changed, 16 insertions, 3 deletions
diff --git a/skeletons/OBJECT_IDENTIFIER.c b/skeletons/OBJECT_IDENTIFIER.c index 1e4fe594..0f713071 100644 --- a/skeletons/OBJECT_IDENTIFIER.c +++ b/skeletons/OBJECT_IDENTIFIER.c @@ -367,6 +367,7 @@ OBJECT_IDENTIFIER_set_single_arc(uint8_t *arcbuf, void *arcval, unsigned int arc uint8_t buffer[arcval_size]; #else uint8_t *buffer = alloca(arcval_size); + if(!buffer) { errno = ENOMEM; return -1; } #endif if(isLittleEndian && !prepared_order) { diff --git a/skeletons/constr_SET.c b/skeletons/constr_SET.c index 2fd0ac9b..dc699f5b 100644 --- a/skeletons/constr_SET.c +++ b/skeletons/constr_SET.c @@ -447,6 +447,12 @@ SET_encode_der(asn1_TYPE_descriptor_t *sd, if(t2m_build_own) { t2m = alloca(specs->elements_count * sizeof(t2m[0])); t2m_count = 0; + if(!t2m) { /* There are such platforms */ + my_erval.encoded = -1; + my_erval.failed_type = sd; + my_erval.structure_ptr = ptr; + return my_erval; + } } else { /* * There is no untagged CHOICE in this SET. diff --git a/skeletons/constraints.c b/skeletons/constraints.c index cf317061..5f01cc73 100644 --- a/skeletons/constraints.c +++ b/skeletons/constraints.c @@ -108,7 +108,7 @@ _asn_i_log_error(asn_app_consume_bytes_f *cb, void *key, const char *fmt, ...) { */ len = ret + 1; p = alloca(len); - if(!p) return; /* Can't be though. */ + if(!p) return; /* Can fail on !x86. */ va_start(ap, fmt); diff --git a/skeletons/der_encoder.c b/skeletons/der_encoder.c index 919350c5..dc547a2c 100644 --- a/skeletons/der_encoder.c +++ b/skeletons/der_encoder.c @@ -60,7 +60,10 @@ der_write_tags(asn1_TYPE_descriptor_t *sd, */ int stag_offset; tags = alloca((sd->tags_count + 1) * sizeof(ber_tlv_tag_t)); - if(tags == NULL) return -1; /* Impossible on i386 */ + if(!tags) { /* Can fail on !x86 */ + errno = ENOMEM; + return -1; + } tags_count = sd->tags_count + 1 /* EXPLICIT or IMPLICIT tag is given */ - ((tag_mode==-1)?sd->tags_impl_skip:0); @@ -79,7 +82,10 @@ der_write_tags(asn1_TYPE_descriptor_t *sd, return 0; lens = alloca(tags_count * sizeof(lens[0])); - if(lens == NULL) return -1; + if(!lens) { + errno = ENOMEM; + return -1; + } /* * Array of tags is initialized. |