diff --git a/skeletons/BIT_STRING.c b/skeletons/BIT_STRING.c index 7727d78cb3a0b04bc89dcb0d1e2b815ae5caa34b..1646929477edacf2a61b49dbfd6ca99a0e7bb4c2 100644 --- a/skeletons/BIT_STRING.c +++ b/skeletons/BIT_STRING.c @@ -59,7 +59,7 @@ BIT_STRING_constraint(asn1_TYPE_descriptor_t *td, const void *sptr, int BIT_STRING_print(asn1_TYPE_descriptor_t *td, const void *sptr, int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { - static char h2c[16] = "0123456789ABCDEF"; + static const char *h2c = "0123456789ABCDEF"; char scratch[64]; const BIT_STRING_t *st = sptr; uint8_t *buf; diff --git a/skeletons/BOOLEAN.c b/skeletons/BOOLEAN.c index 9391316883249c7230d4f324a99a5653d35cacf2..209235d7271fd054caf801624819cfa1a8c3230b 100644 --- a/skeletons/BOOLEAN.c +++ b/skeletons/BOOLEAN.c @@ -60,7 +60,7 @@ BOOLEAN_decode_ber(asn1_TYPE_descriptor_t *td, ASN_DEBUG("Boolean length is %d bytes", (int)length); - buf_ptr += rval.consumed; + (char *)buf_ptr += rval.consumed; size -= rval.consumed; if(length > (ber_tlv_len_t)size) { rval.code = RC_WMORE; diff --git a/skeletons/GeneralizedTime.c b/skeletons/GeneralizedTime.c index 5e3b9b0188321b099c63871b213223019ed94100..99f2e720842042b0cd90dd62d23495b708ebdb50 100644 --- a/skeletons/GeneralizedTime.c +++ b/skeletons/GeneralizedTime.c @@ -437,7 +437,7 @@ asn_time2GT(GeneralizedTime_t *opt_gt, const struct tm *tm, int force_gmt) { if(!opt_gt) { free(buf); return 0; } } - opt_gt->buf = buf; + opt_gt->buf = (unsigned char *)buf; opt_gt->size = size; return opt_gt; diff --git a/skeletons/INTEGER.c b/skeletons/INTEGER.c index 120b94fe825c35cf8c7ecee6850b11950e3db02b..1af06c7c42083a92f0a9540284e578609eba3640 100644 --- a/skeletons/INTEGER.c +++ b/skeletons/INTEGER.c @@ -66,7 +66,7 @@ INTEGER_decode_ber(asn1_TYPE_descriptor_t *td, /* * Make sure we have this length. */ - buf_ptr += rval.consumed; + (char *)buf_ptr += rval.consumed; size -= rval.consumed; if(length > (ber_tlv_len_t)size) { rval.code = RC_WMORE; @@ -230,7 +230,7 @@ INTEGER_print(asn1_TYPE_descriptor_t *td, const void *sptr, int ilevel, /* Output in the long xx:yy:zz... format */ /* TODO: replace with generic algorithm (Knuth TAOCP Vol 2, 4.3.1) */ for(p = scratch; buf < buf_end; buf++) { - static char h2c[16] = "0123456789ABCDEF"; + static const char *h2c = "0123456789ABCDEF"; if((p - scratch) >= (ssize_t)(sizeof(scratch) - 4)) { /* Flush buffer */ if(cb(scratch, p - scratch, app_key)) diff --git a/skeletons/NativeInteger.c b/skeletons/NativeInteger.c index 8f13a5913d144488f028a81a795d7023521d8854..3dce02f05aa8455b179bbdb6ebd22e75e2a299bc 100644 --- a/skeletons/NativeInteger.c +++ b/skeletons/NativeInteger.c @@ -73,7 +73,7 @@ NativeInteger_decode_ber(asn1_TYPE_descriptor_t *td, /* * Make sure we have this length. */ - buf_ptr += rval.consumed; + (char *)buf_ptr += rval.consumed; size -= rval.consumed; if(length > (ber_tlv_len_t)size) { rval.code = RC_WMORE; diff --git a/skeletons/OBJECT_IDENTIFIER.c b/skeletons/OBJECT_IDENTIFIER.c index 216aed832e5a43ca5f52c9fb4eacbf28ffb6d419..20de2f6cbb2d6465e82bd2926b140c920a0a5b29 100644 --- a/skeletons/OBJECT_IDENTIFIER.c +++ b/skeletons/OBJECT_IDENTIFIER.c @@ -154,7 +154,7 @@ OBJECT_IDENTIFIER_get_single_arc(uint8_t *arcbuf, unsigned int arclen, signed in #ifndef WORDS_BIGENDIAN if(*(unsigned char *)&LE) { /* Little endian (x86) */ /* "Convert" to big endian */ - rvbuf += rvsize / CHAR_BIT - 1; + (unsigned char *)rvbuf += rvsize / CHAR_BIT - 1; ((unsigned char *)rvstart)--; inc = -1; /* Descending */ } else @@ -167,7 +167,7 @@ OBJECT_IDENTIFIER_get_single_arc(uint8_t *arcbuf, unsigned int arclen, signed in /* Clear the high unused bits */ for(bits = rvsize - arclen; bits > CHAR_BIT; - rvbuf += inc, bits -= CHAR_BIT) + (unsigned char *)rvbuf += inc, bits -= CHAR_BIT) *(unsigned char *)rvbuf = 0; /* Fill the body of a value */ @@ -177,17 +177,17 @@ OBJECT_IDENTIFIER_get_single_arc(uint8_t *arcbuf, unsigned int arclen, signed in if(bits >= CHAR_BIT) { bits -= CHAR_BIT; *(unsigned char *)rvbuf = (cache >> bits); - rvbuf += inc; + (unsigned char *)rvbuf += inc; } } if(bits) { *(unsigned char *)rvbuf = cache; - rvbuf += inc; + (unsigned char *)rvbuf += inc; } } if(add) { - for(rvbuf -= inc; rvbuf != rvstart; rvbuf -= inc) { + for((unsigned char *)rvbuf -= inc; rvbuf != rvstart; (unsigned char *)rvbuf -= inc) { int v = add + *(unsigned char *)rvbuf; if(v & (-1 << CHAR_BIT)) { *(unsigned char *)rvbuf @@ -287,7 +287,7 @@ OBJECT_IDENTIFIER_print(asn1_TYPE_descriptor_t *td, const void *sptr, int OBJECT_IDENTIFIER_get_arcs(OBJECT_IDENTIFIER_t *oid, void *arcs, unsigned int arc_type_size, unsigned int arc_slots) { - void *arcs_end = arcs + (arc_type_size * arc_slots); + void *arcs_end = (char *)arcs + (arc_type_size * arc_slots); int num_arcs = 0; int startn = 0; int add = 0; @@ -319,10 +319,10 @@ OBJECT_IDENTIFIER_get_arcs(OBJECT_IDENTIFIER_t *oid, void *arcs, add = -40 * first_arc; memset(arcs, 0, arc_type_size); - *(unsigned char *)(arcs + *(unsigned char *)((char *)arcs + ((*(char *)&LE)?0:(arc_type_size - 1))) = first_arc; - arcs += arc_type_size; + (char *)arcs += arc_type_size; } /* Decode, if has space */ @@ -332,7 +332,7 @@ OBJECT_IDENTIFIER_get_arcs(OBJECT_IDENTIFIER_t *oid, void *arcs, arcs, arc_type_size)) return -1; startn = i + 1; - arcs += arc_type_size; + (char *)arcs += arc_type_size; add = 0; } num_arcs++; @@ -371,7 +371,7 @@ OBJECT_IDENTIFIER_set_single_arc(uint8_t *arcbuf, void *arcval, unsigned int arc #endif if(isLittleEndian && !prepared_order) { - uint8_t *a = arcval + arcval_size - 1; + uint8_t *a = (unsigned char *)arcval + arcval_size - 1; uint8_t *aend = arcval; uint8_t *msb = buffer + arcval_size - 1; for(tp = buffer; a >= aend; tp++, a--) @@ -381,7 +381,7 @@ OBJECT_IDENTIFIER_set_single_arc(uint8_t *arcbuf, void *arcval, unsigned int arc tp = msb; /* Most significant non-zero byte */ } else { /* Look for most significant non-zero byte */ - tend = arcval + arcval_size; + tend = (unsigned char *)arcval + arcval_size; for(tp = arcval; tp < tend - 1; tp++) if(*tp) break; } @@ -451,7 +451,8 @@ OBJECT_IDENTIFIER_set_arcs(OBJECT_IDENTIFIER_t *oid, void *arcs, unsigned int ar unsigned char *ps, *pe; /* If more significant bytes are present, * make them > 255 quick */ - for(ps = arcs + 1, pe = ps+arc_type_size; ps < pe; ps++) + for(ps = (unsigned char *)arcs + 1, pe = ps+arc_type_size; + ps < pe; ps++) arc0 |= *ps, arc1 |= *(ps + arc_type_size); arc0 <<= CHAR_BIT, arc1 <<= CHAR_BIT; arc0 = *((unsigned char *)arcs + 0); @@ -512,10 +513,15 @@ OBJECT_IDENTIFIER_set_arcs(OBJECT_IDENTIFIER_t *oid, void *arcs, unsigned int ar uint8_t *tp; #ifdef __GNUC__ uint8_t first_value[1 + arc_type_size]; /* of two arcs */ + uint8_t *fv = first_value; #else uint8_t *first_value = alloca(1 + arc_type_size); -#endif uint8_t *fv = first_value; + if(!first_value) { + errno = ENOMEM; + return -1; + } +#endif /* * Simulate first_value = arc0 * 40 + arc1; @@ -524,8 +530,8 @@ OBJECT_IDENTIFIER_set_arcs(OBJECT_IDENTIFIER_t *oid, void *arcs, unsigned int ar *fv++ = 0; (char *)arcs += arc_type_size; if(isLittleEndian) { - uint8_t *aend = arcs - 1; - uint8_t *a1 = arcs + arc_type_size - 1; + uint8_t *aend = (unsigned char *)arcs - 1; + uint8_t *a1 = (unsigned char *)arcs + arc_type_size - 1; for(; a1 > aend; fv++, a1--) *fv = *a1; } else { uint8_t *a1 = arcs; diff --git a/skeletons/OCTET_STRING.c b/skeletons/OCTET_STRING.c index 53a1a0d15644d5011537e7578bee0c214874b427..d5b28c30e50f85e518915b8083c3c04c6954c34d 100644 --- a/skeletons/OCTET_STRING.c +++ b/skeletons/OCTET_STRING.c @@ -38,7 +38,7 @@ asn1_TYPE_descriptor_t asn1_DEF_OCTET_STRING = { #define ADVANCE(num_bytes) do { \ size_t num = num_bytes; \ - buf_ptr += num; \ + (char *)buf_ptr += num; \ size -= num; \ consumed_myself += num; \ } while(0) @@ -239,7 +239,7 @@ OCTET_STRING_decode_ber(asn1_TYPE_descriptor_t *td, tlv_constr = BER_TLV_CONSTRUCTED(buf_ptr); ll = ber_fetch_length(tlv_constr, - buf_ptr + tl, size - tl, &tlv_len); + (char *)buf_ptr + tl, size - tl, &tlv_len); ASN_DEBUG("Got tag=%s, tl=%d, len=%d, ll=%d, {%d, %d}", ber_tlv_tag_string(tlv_tag), tl, tlv_len, ll, ((uint8_t *)buf_ptr)[0], @@ -325,7 +325,7 @@ OCTET_STRING_decode_ber(asn1_TYPE_descriptor_t *td, */ st->buf[st->size-1] &= 0xff << st->buf[0]; - APPEND((buf_ptr+1), (len - 1)); + APPEND(((char *)buf_ptr+1), (len - 1)); st->buf[0] = *(uint8_t *)buf_ptr; sel->bits_chopped = 1; } else { @@ -457,7 +457,7 @@ OCTET_STRING_encode_der(asn1_TYPE_descriptor_t *sd, void *ptr, int OCTET_STRING_print(asn1_TYPE_descriptor_t *td, const void *sptr, int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { - static char h2c[16] = "0123456789ABCDEF"; + static const char *h2c = "0123456789ABCDEF"; const OCTET_STRING_t *st = sptr; char scratch[16 * 3 + 4]; char *p = scratch; diff --git a/skeletons/RELATIVE-OID.c b/skeletons/RELATIVE-OID.c index ab4c3667152d894ddb802b783edb9246775d0385..de0a7c37a55698ff69f955da700f8cf36dd8da53 100644 --- a/skeletons/RELATIVE-OID.c +++ b/skeletons/RELATIVE-OID.c @@ -65,7 +65,7 @@ RELATIVE_OID_print(asn1_TYPE_descriptor_t *td, const void *sptr, int ilevel, int RELATIVE_OID_get_arcs(RELATIVE_OID_t *roid, void *arcs, unsigned int arc_type_size, unsigned int arc_slots) { - void *arcs_end = arcs + (arc_slots * arc_type_size); + void *arcs_end = (char *)arcs + (arc_slots * arc_type_size); int num_arcs = 0; int startn = 0; int i; @@ -86,7 +86,7 @@ RELATIVE_OID_get_arcs(RELATIVE_OID_t *roid, i - startn + 1, 0, arcs, arc_type_size)) return -1; - arcs += arc_type_size; + (char *)arcs += arc_type_size; num_arcs++; } diff --git a/skeletons/UTCTime.c b/skeletons/UTCTime.c index 2ebf43375fb4f389ff2c5c1c4948cb1dbd4aedb5..c02e9f7120e159cd21d054be2df3fa2d71be0a0a 100644 --- a/skeletons/UTCTime.c +++ b/skeletons/UTCTime.c @@ -93,7 +93,7 @@ asn_UT2time(const UTCTime_t *st, struct tm *_tm, int as_gmt) { return -1; } - gt.buf = buf; + gt.buf = (unsigned char *)buf; gt.size = st->size + 2; memcpy(gt.buf + 2, st->buf, st->size); if(st->buf[0] > 0x35) { diff --git a/skeletons/ber_decoder.c b/skeletons/ber_decoder.c index 3ae678ec0c8b0e2433d144e55949aa831c0f1e4a..0fd9b2623da432745a1b03b313da2205f71abdc4 100644 --- a/skeletons/ber_decoder.c +++ b/skeletons/ber_decoder.c @@ -7,7 +7,7 @@ #define ADVANCE(num_bytes) do { \ size_t num = num_bytes; \ - ptr += num; \ + (char *)ptr += num; \ size -= num; \ consumed_myself += num; \ } while(0) @@ -162,7 +162,7 @@ ber_check_tags(asn1_TYPE_descriptor_t *td, ber_dec_ctx_t *ctx, * Fetch and process L from TLV. */ len_len = ber_fetch_length(tlv_constr, - ptr + tag_len, size - tag_len, &tlv_len); + (char *)ptr + tag_len, size - tag_len, &tlv_len); switch(len_len) { case -1: RETURN(RC_FAIL); case 0: RETURN(RC_WMORE); diff --git a/skeletons/ber_decoder.h b/skeletons/ber_decoder.h index 8240270a9cf017568ef8f6de49979594a6c939da..4842adb539769eb2f72b9c5af5af761cdf24677c 100644 --- a/skeletons/ber_decoder.h +++ b/skeletons/ber_decoder.h @@ -18,14 +18,14 @@ struct asn1_TYPE_descriptor_s; /* Forward declaration */ * decoded bytes, hence provide a possibility, to fail with more diagnostics * (i.e., print the offending remainder of the buffer). */ +enum ber_dec_rval_code_e { + RC_OK, /* Decoded successfully */ + RC_WMORE, /* More data expected, call again */ + RC_FAIL, /* Failure to decode data */ +}; typedef struct ber_dec_rval_s { - enum { - RC_OK, /* Decoded successfully */ - RC_WMORE, /* More data expected, call again */ - RC_FAIL, /* Failure to decode data */ - } code; - - size_t consumed; /* Number of bytes consumed */ + enum ber_dec_rval_code_e code; /* Result code */ + size_t consumed; /* Number of bytes consumed */ } ber_dec_rval_t; /* diff --git a/skeletons/ber_tlv_length.c b/skeletons/ber_tlv_length.c index 71850f09ea94ddacccb18f03b9fc21fa06a9efbc..af872366fb1e2f4b89efb58b9f8662e89916cd41 100644 --- a/skeletons/ber_tlv_length.c +++ b/skeletons/ber_tlv_length.c @@ -87,7 +87,7 @@ ber_skip_length(int _is_constructed, void *ptr, size_t size) { * Indefinite length! */ ASN_DEBUG("Skipping indefinite length"); - for(skip = ll, ptr += ll, size -= ll;;) { + for(skip = ll, (char *)ptr += ll, size -= ll;;) { ber_tlv_tag_t tag; /* Fetch the tag */ @@ -95,7 +95,7 @@ ber_skip_length(int _is_constructed, void *ptr, size_t size) { if(tl <= 0) return tl; ll = ber_skip_length(BER_TLV_CONSTRUCTED(ptr), - ptr + tl, size - tl); + (char *)ptr + tl, size - tl); if(ll <= 0) return ll; skip += tl + ll; @@ -109,7 +109,7 @@ ber_skip_length(int _is_constructed, void *ptr, size_t size) { && ((uint8_t *)ptr)[1] == 0) return skip; - ptr += tl + ll; + (char *)ptr += tl + ll; size -= tl + ll; } diff --git a/skeletons/ber_tlv_tag.c b/skeletons/ber_tlv_tag.c index a6cccec847283e2ed6847b080a4f1b061abcf370..26d7122221dfc1c1d672a1618dc7a1c5ddb33c30 100644 --- a/skeletons/ber_tlv_tag.c +++ b/skeletons/ber_tlv_tag.c @@ -30,7 +30,8 @@ ber_fetch_tag(void *ptr, size_t size, ber_tlv_tag_t *tag_r) { * Each octet contains 7 bits of useful information. * The MSB is 0 if it is the last octet of the tag. */ - for(val = 0, ptr++, skipped = 2; skipped < size; ptr++, skipped++) { + for(val = 0, ((char *)ptr)++, skipped = 2; + skipped < size; ((char *)ptr)++, skipped++) { unsigned oct = *(uint8_t *)ptr; if(oct & 0x80) { val = (val << 7) | (oct & 0x7F); diff --git a/skeletons/constr_CHOICE.c b/skeletons/constr_CHOICE.c index 7870a4cfc563b6e6f2b602b48bca61a2c06b0261..a620b0ceb9b69a86fedea2831b64ba724a878a3a 100644 --- a/skeletons/constr_CHOICE.c +++ b/skeletons/constr_CHOICE.c @@ -31,7 +31,7 @@ */ #define ADVANCE(num_bytes) do { \ size_t num = num_bytes; \ - ptr += num; \ + (char *)ptr += num; \ size -= num; \ if(ctx->left >= 0) \ ctx->left -= num; \ @@ -128,7 +128,7 @@ CHOICE_decode_ber(asn1_TYPE_descriptor_t *sd, /* * Restore parsing context. */ - ctx = (st + specs->ctx_offset); + ctx = (ber_dec_ctx_t *)((char *)st + specs->ctx_offset); /* * Start to parse where left previously @@ -206,7 +206,7 @@ CHOICE_decode_ber(asn1_TYPE_descriptor_t *sd, skip = ber_skip_length( BER_TLV_CONSTRUCTED(ptr), - ptr + tag_len, LEFT - tag_len); + (char *)ptr + tag_len, LEFT - tag_len); switch(skip) { case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); @@ -468,7 +468,7 @@ CHOICE_outmost_tag(asn1_TYPE_descriptor_t *td, const void *ptr, int tag_mode, be return asn1_TYPE_outmost_tag(elm->type, memb_ptr, elm->tag_mode, elm->tag); } else { - return -1; + return (ber_tlv_tag_t)-1; } } diff --git a/skeletons/constr_SEQUENCE.c b/skeletons/constr_SEQUENCE.c index 2a5bbd4551771f25837acec6e22c6cb666864764..f2736811935efa2a0501b21e9bc554bc15cb7730 100644 --- a/skeletons/constr_SEQUENCE.c +++ b/skeletons/constr_SEQUENCE.c @@ -31,7 +31,7 @@ */ #define ADVANCE(num_bytes) do { \ size_t num = num_bytes; \ - ptr += num; \ + (char *)ptr += num; \ size -= num; \ if(ctx->left >= 0) \ ctx->left -= num; \ @@ -138,7 +138,7 @@ SEQUENCE_decode_ber(asn1_TYPE_descriptor_t *sd, /* * Restore parsing context. */ - ctx = (st + specs->ctx_offset); + ctx = (ber_dec_ctx_t *)((char *)st + specs->ctx_offset); /* * Start to parse where left previously @@ -336,7 +336,7 @@ SEQUENCE_decode_ber(asn1_TYPE_descriptor_t *sd, skip = ber_skip_length( BER_TLV_CONSTRUCTED(ptr), - ptr + tag_len, LEFT - tag_len); + (char *)ptr + tag_len, LEFT - tag_len); ASN_DEBUG("Skip length %d in %s", (int)skip, sd->name); switch(skip) { @@ -455,7 +455,7 @@ SEQUENCE_decode_ber(asn1_TYPE_descriptor_t *sd, ll = ber_skip_length( BER_TLV_CONSTRUCTED(ptr), - ptr + tl, LEFT - tl); + (char *)ptr + tl, LEFT - tl); switch(ll) { case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); /* Fall through */ diff --git a/skeletons/constr_SET.c b/skeletons/constr_SET.c index dc699f5bd97b311654e2bbf0cfd65bdffd2280db..2477a38196ecd1aacd7ee652d8c937b45480e547 100644 --- a/skeletons/constr_SET.c +++ b/skeletons/constr_SET.c @@ -37,7 +37,7 @@ */ #define ADVANCE(num_bytes) do { \ size_t num = num_bytes; \ - ptr += num; \ + (char *)ptr += num; \ size -= num; \ if(ctx->left >= 0) \ ctx->left -= num; \ @@ -128,7 +128,7 @@ SET_decode_ber(asn1_TYPE_descriptor_t *sd, /* * Restore parsing context. */ - ctx = (st + specs->ctx_offset); + ctx = (ber_dec_ctx_t *)((char *)st + specs->ctx_offset); /* * Start to parse where left previously @@ -256,7 +256,7 @@ SET_decode_ber(asn1_TYPE_descriptor_t *sd, skip = ber_skip_length( BER_TLV_CONSTRUCTED(ptr), - ptr + tag_len, LEFT - tag_len); + (char *)ptr + tag_len, LEFT - tag_len); switch(skip) { case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); @@ -281,7 +281,7 @@ SET_decode_ber(asn1_TYPE_descriptor_t *sd, * Check for duplications: must not overwrite * already decoded elements. */ - if(ASN_SET_ISPRESENT2(st + specs->pres_offset, edx)) { + if(ASN_SET_ISPRESENT2((char *)st + specs->pres_offset, edx)) { ASN_DEBUG("SET %s: Duplicate element %s (%d)", sd->name, elements[edx].name, edx); RETURN(RC_FAIL); @@ -312,7 +312,7 @@ SET_decode_ber(asn1_TYPE_descriptor_t *sd, elements[edx].tag_mode); switch(rval.code) { case RC_OK: - ASN_SET_MKPRESENT(st + specs->pres_offset, edx); + ASN_SET_MKPRESENT((char *)st + specs->pres_offset, edx); break; case RC_WMORE: /* More data expected */ if(!SIZE_VIOLATION) { @@ -378,7 +378,7 @@ SET_decode_ber(asn1_TYPE_descriptor_t *sd, ll = ber_skip_length( BER_TLV_CONSTRUCTED(ptr), - ptr + tl, LEFT - tl); + (char *)ptr + tl, LEFT - tl); switch(ll) { case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); /* Fall through */ @@ -398,7 +398,7 @@ SET_decode_ber(asn1_TYPE_descriptor_t *sd, unsigned int midx, pres, must; midx = edx/(8 * sizeof(specs->_mandatory_elements[0])); - pres = ((unsigned int *)(st+specs->pres_offset))[midx]; + pres = ((unsigned int *)((char *)st+specs->pres_offset))[midx]; must = ntohl(specs->_mandatory_elements[midx]); if((pres & must) == must) { diff --git a/skeletons/constr_SET_OF.c b/skeletons/constr_SET_OF.c index ff628d21527fff28d862513bb8b5f36e769d28a1..84fb895a8d40bf945433d62899186d1603e4232e 100644 --- a/skeletons/constr_SET_OF.c +++ b/skeletons/constr_SET_OF.c @@ -31,7 +31,7 @@ */ #define ADVANCE(num_bytes) do { \ size_t num = num_bytes; \ - ptr += num; \ + (char *)ptr += num; \ size -= num; \ if(ctx->left >= 0) \ ctx->left -= num; \ @@ -95,7 +95,7 @@ SET_OF_decode_ber(asn1_TYPE_descriptor_t *sd, /* * Restore parsing context. */ - ctx = (st + specs->ctx_offset); + ctx = (ber_dec_ctx_t *)((char *)st + specs->ctx_offset); /* * Start to parse where left previously diff --git a/skeletons/der_encoder.c b/skeletons/der_encoder.c index dc547a2cbcff895973ef99e8a474e4e5b3b29b44..9ed91cee9d751bc46115c1a8edfa2be408f58acb 100644 --- a/skeletons/der_encoder.c +++ b/skeletons/der_encoder.c @@ -4,6 +4,7 @@ */ #include <constr_TYPE.h> #include <assert.h> +#include <errno.h> static ssize_t der_write_TL(ber_tlv_tag_t tag, ber_tlv_len_t len, asn_app_consume_bytes_f *cb, void *app_key, int constructed);