diff --git a/libasn1compiler/asn1c_internal.h b/libasn1compiler/asn1c_internal.h index c37620cd..fb8cc1e2 100644 --- a/libasn1compiler/asn1c_internal.h +++ b/libasn1compiler/asn1c_internal.h @@ -24,15 +24,16 @@ #ifdef WIN32 #include +#include +#include #define open _open #define close _close -#define alloca _alloca #define snprintf _snprintf #define vsnprintf _vsnprintf #else -#include /* for open(2) */ #include /* for glob(3) */ #endif +#include /* for open(2) */ #ifdef HAVE_SYS_PARAM_H #include /* For MAXPATHLEN */ diff --git a/libasn1fix/asn1fix_param.c b/libasn1fix/asn1fix_param.c index 6b3a6294..f8e3a2e7 100644 --- a/libasn1fix/asn1fix_param.c +++ b/libasn1fix/asn1fix_param.c @@ -50,8 +50,9 @@ asn1f_parameterization_fork(arg_t *arg, asn1p_expr_t *expr, asn1p_expr_t *rhs_ps rarg.lhs_params = expr->lhs_params; rarg.rhs_pspecs = rhs_pspecs; exc = asn1p_expr_clone_with_resolver(expr, resolve_expr, &rarg); + if(!exc) return NULL; rpc = asn1p_expr_clone(rhs_pspecs, 0); - assert(exc && rpc); + assert(rpc); /* * Create a new specialization. @@ -137,6 +138,7 @@ resolve_expr(asn1p_expr_t *expr_to_resolve, void *resolver_arg) { expr->Identifier, expr->meta_type, expr->expr_type); if(expr->meta_type == AMT_TYPE || expr->meta_type == AMT_VALUE + || expr->meta_type == AMT_TYPEREF || expr->meta_type == AMT_VALUESET) { DEBUG("Target is a simple type %s", ASN_EXPR_TYPE2STR(expr->expr_type)); diff --git a/skeletons/constr_SEQUENCE.c b/skeletons/constr_SEQUENCE.c index 5b57342c..2b0ac3de 100644 --- a/skeletons/constr_SEQUENCE.c +++ b/skeletons/constr_SEQUENCE.c @@ -1078,7 +1078,7 @@ SEQUENCE_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, * Get the sequence ROOT elements. */ for(edx = 0; edx < ((specs->ext_before < 0) - ? td->elements_count : specs->ext_before + 1); edx++) { + ? td->elements_count : specs->ext_before - 1); edx++) { asn_TYPE_member_t *elm = &td->elements[edx]; void *memb_ptr; /* Pointer to the member */ void **memb_ptr2; /* Pointer to that pointer */ @@ -1219,7 +1219,7 @@ SEQUENCE_encode_uper(asn_TYPE_descriptor_t *td, * Get the sequence ROOT elements. */ for(edx = 0; edx < ((specs->ext_before < 0) - ? td->elements_count : specs->ext_before + 1); edx++) { + ? td->elements_count : specs->ext_before - 1); edx++) { asn_TYPE_member_t *elm = &td->elements[edx]; void *memb_ptr; /* Pointer to the member */ void **memb_ptr2; /* Pointer to that pointer */