From 8c3b8540167e64deaf2f9919d73076cd53a22146 Mon Sep 17 00:00:00 2001
From: Lev Walkin <vlm@lionet.info>
Date: Thu, 10 Mar 2005 18:52:02 +0000
Subject: [PATCH] added const qualifier

---
 skeletons/BMPString.c         |  2 +-
 skeletons/BOOLEAN.c           |  8 ++++----
 skeletons/INTEGER.c           |  2 +-
 skeletons/NULL.c              |  2 +-
 skeletons/NativeInteger.c     |  8 ++++----
 skeletons/NativeReal.c        |  8 ++++----
 skeletons/OBJECT_IDENTIFIER.c |  2 +-
 skeletons/OCTET_STRING.c      | 26 +++++++++++++-------------
 skeletons/REAL.c              |  2 +-
 skeletons/RELATIVE-OID.c      |  2 +-
 skeletons/UniversalString.c   |  2 +-
 skeletons/asn_codecs_prim.c   |  6 +++---
 skeletons/asn_codecs_prim.h   |  2 +-
 skeletons/ber_decoder.c       | 10 +++++-----
 skeletons/ber_decoder.h       |  6 +++---
 skeletons/ber_tlv_length.c    | 18 +++++++++---------
 skeletons/ber_tlv_length.h    |  4 ++--
 skeletons/ber_tlv_tag.c       | 11 ++++++-----
 skeletons/ber_tlv_tag.h       |  4 ++--
 skeletons/constr_CHOICE.c     | 15 ++++++++-------
 skeletons/constr_SEQUENCE.c   | 21 +++++++++++----------
 skeletons/constr_SET.c        | 22 +++++++++++-----------
 skeletons/constr_SET_OF.c     | 18 +++++++++---------
 skeletons/xer_decoder.c       |  2 +-
 skeletons/xer_decoder.h       |  8 ++++----
 25 files changed, 107 insertions(+), 104 deletions(-)

diff --git a/skeletons/BMPString.c b/skeletons/BMPString.c
index 10469eda..42b84f68 100644
--- a/skeletons/BMPString.c
+++ b/skeletons/BMPString.c
@@ -79,7 +79,7 @@ BMPString__dump(const BMPString_t *st,
 asn_dec_rval_t
 BMPString_decode_xer(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *td, void **sptr,
-		const char *opt_mname, void *buf_ptr, size_t size) {
+		const char *opt_mname, const void *buf_ptr, size_t size) {
 	asn_dec_rval_t rc;
 
 	rc = OCTET_STRING_decode_xer_utf8(opt_codec_ctx, td, sptr, opt_mname,
diff --git a/skeletons/BOOLEAN.c b/skeletons/BOOLEAN.c
index 04e6560e..360b6643 100644
--- a/skeletons/BOOLEAN.c
+++ b/skeletons/BOOLEAN.c
@@ -37,7 +37,7 @@ asn_TYPE_descriptor_t asn_DEF_BOOLEAN = {
 asn_dec_rval_t
 BOOLEAN_decode_ber(asn_codec_ctx_t *opt_codec_ctx,
 		asn_TYPE_descriptor_t *td,
-		void **bool_value, void *buf_ptr, size_t size,
+		void **bool_value, const void *buf_ptr, size_t size,
 		int tag_mode) {
 	BOOLEAN_t *st = (BOOLEAN_t *)*bool_value;
 	asn_dec_rval_t rval;
@@ -66,7 +66,7 @@ BOOLEAN_decode_ber(asn_codec_ctx_t *opt_codec_ctx,
 
 	ASN_DEBUG("Boolean length is %d bytes", (int)length);
 
-	buf_ptr = ((char *)buf_ptr) + rval.consumed;
+	buf_ptr = ((const char *)buf_ptr) + rval.consumed;
 	size -= rval.consumed;
 	if(length > (ber_tlv_len_t)size) {
 		rval.code = RC_WMORE;
@@ -84,7 +84,7 @@ BOOLEAN_decode_ber(asn_codec_ctx_t *opt_codec_ctx,
 		 * value is already TRUE.
 		 * BOOLEAN is not supposed to contain meaningful data anyway.
 		 */
-		*st |= ((uint8_t *)buf_ptr)[lidx];
+		*st |= ((const uint8_t *)buf_ptr)[lidx];
 	}
 
 	rval.code = RC_OK;
@@ -169,7 +169,7 @@ BOOLEAN__xer_body_decode(asn_TYPE_descriptor_t *td, void *sptr, const void *chun
 asn_dec_rval_t
 BOOLEAN_decode_xer(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *td, void **sptr, const char *opt_mname,
-		void *buf_ptr, size_t size) {
+		const void *buf_ptr, size_t size) {
 
 	return xer_decode_primitive(opt_codec_ctx, td,
 		sptr, sizeof(BOOLEAN_t), opt_mname, buf_ptr, size,
diff --git a/skeletons/INTEGER.c b/skeletons/INTEGER.c
index 164bf3f6..2579153f 100644
--- a/skeletons/INTEGER.c
+++ b/skeletons/INTEGER.c
@@ -409,7 +409,7 @@ INTEGER__xer_body_decode(asn_TYPE_descriptor_t *td, void *sptr, const void *chun
 asn_dec_rval_t
 INTEGER_decode_xer(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *td, void **sptr, const char *opt_mname,
-		void *buf_ptr, size_t size) {
+		const void *buf_ptr, size_t size) {
 
 	return xer_decode_primitive(opt_codec_ctx, td,
 		sptr, sizeof(INTEGER_t), opt_mname,
diff --git a/skeletons/NULL.c b/skeletons/NULL.c
index d5d98d9f..5b0351e3 100644
--- a/skeletons/NULL.c
+++ b/skeletons/NULL.c
@@ -81,7 +81,7 @@ NULL__xer_body_decode(asn_TYPE_descriptor_t *td, void *sptr, const void *chunk_b
 asn_dec_rval_t
 NULL_decode_xer(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *td, void **sptr, const char *opt_mname,
-		void *buf_ptr, size_t size) {
+		const void *buf_ptr, size_t size) {
 
 	return xer_decode_primitive(opt_codec_ctx, td,
 		sptr, sizeof(NULL_t), opt_mname, buf_ptr, size,
diff --git a/skeletons/NativeInteger.c b/skeletons/NativeInteger.c
index 102372c4..acdbff6f 100644
--- a/skeletons/NativeInteger.c
+++ b/skeletons/NativeInteger.c
@@ -44,7 +44,7 @@ asn_TYPE_descriptor_t asn_DEF_NativeInteger = {
 asn_dec_rval_t
 NativeInteger_decode_ber(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *td,
-	void **nint_ptr, void *buf_ptr, size_t size, int tag_mode) {
+	void **nint_ptr, const void *buf_ptr, size_t size, int tag_mode) {
 	long *native = (long *)*nint_ptr;
 	asn_dec_rval_t rval;
 	ber_tlv_len_t length;
@@ -77,7 +77,7 @@ NativeInteger_decode_ber(asn_codec_ctx_t *opt_codec_ctx,
 	/*
 	 * Make sure we have this length.
 	 */
-	buf_ptr = ((char *)buf_ptr) + rval.consumed;
+	buf_ptr = ((const char *)buf_ptr) + rval.consumed;
 	size -= rval.consumed;
 	if(length > (ber_tlv_len_t)size) {
 		rval.code = RC_WMORE;
@@ -93,7 +93,7 @@ NativeInteger_decode_ber(asn_codec_ctx_t *opt_codec_ctx,
 	{
 		INTEGER_t tmp;
 		long l;
-		tmp.buf = (uint8_t *)buf_ptr;
+		(const uint8_t *)tmp.buf = (const uint8_t *)buf_ptr;
 		tmp.size = length;
 
 		if(asn_INTEGER2long(&tmp, &l)) {
@@ -169,7 +169,7 @@ NativeInteger_encode_der(asn_TYPE_descriptor_t *sd, void *ptr,
 asn_dec_rval_t
 NativeInteger_decode_xer(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *td, void **sptr, const char *opt_mname,
-		void *buf_ptr, size_t size) {
+		const void *buf_ptr, size_t size) {
 	asn_dec_rval_t rval;
 	INTEGER_t *st = 0;
 	void *st_ptr = (void *)&st;
diff --git a/skeletons/NativeReal.c b/skeletons/NativeReal.c
index 810d510b..5bc95b05 100644
--- a/skeletons/NativeReal.c
+++ b/skeletons/NativeReal.c
@@ -45,7 +45,7 @@ asn_TYPE_descriptor_t asn_DEF_NativeReal = {
 asn_dec_rval_t
 NativeReal_decode_ber(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *td,
-	void **dbl_ptr, void *buf_ptr, size_t size, int tag_mode) {
+	void **dbl_ptr, const void *buf_ptr, size_t size, int tag_mode) {
 	double *Dbl = (double *)*dbl_ptr;
 	asn_dec_rval_t rval;
 	ber_tlv_len_t length;
@@ -79,7 +79,7 @@ NativeReal_decode_ber(asn_codec_ctx_t *opt_codec_ctx,
 	/*
 	 * Make sure we have this length.
 	 */
-	buf_ptr = ((char *)buf_ptr) + rval.consumed;
+	buf_ptr = ((const char *)buf_ptr) + rval.consumed;
 	size -= rval.consumed;
 	if(length > (ber_tlv_len_t)size) {
 		rval.code = RC_WMORE;
@@ -95,7 +95,7 @@ NativeReal_decode_ber(asn_codec_ctx_t *opt_codec_ctx,
 	{
 		REAL_t tmp;
 		double d;
-		tmp.buf = (uint8_t *)buf_ptr;
+		(const uint8_t *)tmp.buf = (const uint8_t *)buf_ptr;
 		tmp.size = length;
 
 		if(asn_REAL2double(&tmp, &d)) {
@@ -158,7 +158,7 @@ NativeReal_encode_der(asn_TYPE_descriptor_t *td, void *ptr,
 asn_dec_rval_t
 NativeReal_decode_xer(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *td, void **sptr, const char *opt_mname,
-		void *buf_ptr, size_t size) {
+		const void *buf_ptr, size_t size) {
 	asn_dec_rval_t rval;
 	REAL_t *st = 0;
 	double *Dbl = (double *)*sptr;
diff --git a/skeletons/OBJECT_IDENTIFIER.c b/skeletons/OBJECT_IDENTIFIER.c
index 798929ff..f899ab08 100644
--- a/skeletons/OBJECT_IDENTIFIER.c
+++ b/skeletons/OBJECT_IDENTIFIER.c
@@ -310,7 +310,7 @@ OBJECT_IDENTIFIER__xer_body_decode(asn_TYPE_descriptor_t *td, void *sptr, const
 asn_dec_rval_t
 OBJECT_IDENTIFIER_decode_xer(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *td, void **sptr, const char *opt_mname,
-		void *buf_ptr, size_t size) {
+		const void *buf_ptr, size_t size) {
 
 	return xer_decode_primitive(opt_codec_ctx, td,
 		sptr, sizeof(OBJECT_IDENTIFIER_t), opt_mname,
diff --git a/skeletons/OCTET_STRING.c b/skeletons/OCTET_STRING.c
index 26df4bc9..207b5287 100644
--- a/skeletons/OCTET_STRING.c
+++ b/skeletons/OCTET_STRING.c
@@ -54,7 +54,7 @@ asn_TYPE_descriptor_t asn_DEF_OCTET_STRING = {
 #undef	ADVANCE
 #define	ADVANCE(num_bytes)	do {			\
 		size_t num = (num_bytes);		\
-		buf_ptr = ((char *)buf_ptr) + num;	\
+		buf_ptr = ((const char *)buf_ptr) + num;\
 		size -= num;				\
 		consumed_myself += num;			\
 	} while(0)
@@ -164,7 +164,7 @@ _new_stack() {
 asn_dec_rval_t
 OCTET_STRING_decode_ber(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *td,
-	void **os_structure, void *buf_ptr, size_t size, int tag_mode) {
+	void **os_structure, const void *buf_ptr, size_t size, int tag_mode) {
 	asn_OCTET_STRING_specifics_t *specs = td->specifics
 				? (asn_OCTET_STRING_specifics_t *)td->specifics
 				: &asn_DEF_OCTET_STRING_specs;
@@ -285,7 +285,7 @@ OCTET_STRING_decode_ber(asn_codec_ctx_t *opt_codec_ctx,
 		tlv_constr = BER_TLV_CONSTRUCTED(buf_ptr);
 
 		ll = ber_fetch_length(tlv_constr,
-				(char *)buf_ptr + tl, Left - tl, &tlv_len);
+				(const char *)buf_ptr + tl,Left - tl,&tlv_len);
 		ASN_DEBUG("Got tag=%s, tc=%d, left=%ld, tl=%ld, len=%ld, ll=%ld",
 			ber_tlv_tag_string(tlv_tag), tlv_constr,
 				(long)Left, (long)tl, (long)tlv_len, (long)ll);
@@ -295,8 +295,8 @@ OCTET_STRING_decode_ber(asn_codec_ctx_t *opt_codec_ctx,
 		}
 
 		if(sel && sel->want_nulls
-			&& ((uint8_t *)buf_ptr)[0] == 0
-			&& ((uint8_t *)buf_ptr)[1] == 0)
+			&& ((const uint8_t *)buf_ptr)[0] == 0
+			&& ((const uint8_t *)buf_ptr)[1] == 0)
 		{
 
 			ASN_DEBUG("Eat EOC; wn=%d--", sel->want_nulls);
@@ -426,8 +426,8 @@ OCTET_STRING_decode_ber(asn_codec_ctx_t *opt_codec_ctx,
 			if(type_variant == _TT_BIT_STRING
 			&& sel->bits_chopped == 0) {
 				/* Put the unused-bits-octet away */
-				st->bits_unused = *(uint8_t *)buf_ptr;
-				APPEND(((char *)buf_ptr+1), (len - 1));
+				st->bits_unused = *(const uint8_t *)buf_ptr;
+				APPEND(((const char *)buf_ptr+1), (len - 1));
 				sel->bits_chopped = 1;
 			} else {
 				APPEND(buf_ptr, len);
@@ -457,7 +457,7 @@ OCTET_STRING_decode_ber(asn_codec_ctx_t *opt_codec_ctx,
 		if(size < (size_t)ctx->left) {
 			if(!size) RETURN(RC_WMORE);
 			if(type_variant == _TT_BIT_STRING && ctx->step == 0) {
-				st->bits_unused = *(uint8_t *)buf_ptr;
+				st->bits_unused = *(const uint8_t *)buf_ptr;
 				ctx->left--;
 				ADVANCE(1);
 			}
@@ -469,7 +469,7 @@ OCTET_STRING_decode_ber(asn_codec_ctx_t *opt_codec_ctx,
 		} else {
 			if(type_variant == _TT_BIT_STRING
 			&& ctx->step == 0 && ctx->left) {
-				st->bits_unused = *(uint8_t *)buf_ptr;
+				st->bits_unused = *(const uint8_t *)buf_ptr;
 				ctx->left--;
 				ADVANCE(1);
 			}
@@ -1096,7 +1096,7 @@ static ssize_t OCTET_STRING__convert_entrefs(void *sptr, const void *chunk_buf,
 static asn_dec_rval_t
 OCTET_STRING__decode_xer(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *td, void **sptr,
-	const char *opt_mname, void *buf_ptr, size_t size,
+	const char *opt_mname, const void *buf_ptr, size_t size,
 	int (*opt_unexpected_tag_decoder)
 		(void *struct_ptr, const void *chunk_buf, size_t chunk_size),
 	ssize_t (*body_receiver)
@@ -1156,7 +1156,7 @@ sta_failed:
 asn_dec_rval_t
 OCTET_STRING_decode_xer_hex(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *td, void **sptr,
-		const char *opt_mname, void *buf_ptr, size_t size) {
+		const char *opt_mname, const void *buf_ptr, size_t size) {
 	return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname,
 		buf_ptr, size, 0, OCTET_STRING__convert_hexadecimal);
 }
@@ -1167,7 +1167,7 @@ OCTET_STRING_decode_xer_hex(asn_codec_ctx_t *opt_codec_ctx,
 asn_dec_rval_t
 OCTET_STRING_decode_xer_binary(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *td, void **sptr,
-		const char *opt_mname, void *buf_ptr, size_t size) {
+		const char *opt_mname, const void *buf_ptr, size_t size) {
 	return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname,
 		buf_ptr, size, 0, OCTET_STRING__convert_binary);
 }
@@ -1178,7 +1178,7 @@ OCTET_STRING_decode_xer_binary(asn_codec_ctx_t *opt_codec_ctx,
 asn_dec_rval_t
 OCTET_STRING_decode_xer_utf8(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *td, void **sptr,
-		const char *opt_mname, void *buf_ptr, size_t size) {
+		const char *opt_mname, const void *buf_ptr, size_t size) {
 	return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname,
 		buf_ptr, size,
 		OCTET_STRING__handle_control_chars,
diff --git a/skeletons/REAL.c b/skeletons/REAL.c
index 4b73f4b7..6a5e7cd9 100644
--- a/skeletons/REAL.c
+++ b/skeletons/REAL.c
@@ -325,7 +325,7 @@ REAL__xer_body_decode(asn_TYPE_descriptor_t *td, void *sptr, const void *chunk_b
 asn_dec_rval_t
 REAL_decode_xer(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *td, void **sptr, const char *opt_mname,
-		void *buf_ptr, size_t size) {
+		const void *buf_ptr, size_t size) {
 
 	return xer_decode_primitive(opt_codec_ctx, td,
 		sptr, sizeof(REAL_t), opt_mname,
diff --git a/skeletons/RELATIVE-OID.c b/skeletons/RELATIVE-OID.c
index 97b69f60..b0be6228 100644
--- a/skeletons/RELATIVE-OID.c
+++ b/skeletons/RELATIVE-OID.c
@@ -134,7 +134,7 @@ RELATIVE_OID__xer_body_decode(asn_TYPE_descriptor_t *td, void *sptr, const void
 asn_dec_rval_t
 RELATIVE_OID_decode_xer(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *td, void **sptr, const char *opt_mname,
-		void *buf_ptr, size_t size) {
+		const void *buf_ptr, size_t size) {
 
 	return xer_decode_primitive(opt_codec_ctx, td,
 		sptr, sizeof(RELATIVE_OID_t), opt_mname,
diff --git a/skeletons/UniversalString.c b/skeletons/UniversalString.c
index 2918d070..27f1cda4 100644
--- a/skeletons/UniversalString.c
+++ b/skeletons/UniversalString.c
@@ -98,7 +98,7 @@ UniversalString__dump(const UniversalString_t *st,
 asn_dec_rval_t
 UniversalString_decode_xer(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *td, void **sptr,
-		const char *opt_mname, void *buf_ptr, size_t size) {
+		const char *opt_mname, const void *buf_ptr, size_t size) {
 	asn_dec_rval_t rc;
 
 	rc = OCTET_STRING_decode_xer_utf8(opt_codec_ctx, td, sptr, opt_mname,
diff --git a/skeletons/asn_codecs_prim.c b/skeletons/asn_codecs_prim.c
index a2aeeee5..afadb721 100644
--- a/skeletons/asn_codecs_prim.c
+++ b/skeletons/asn_codecs_prim.c
@@ -13,7 +13,7 @@
 asn_dec_rval_t
 ber_decode_primitive(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *td,
-	void **sptr, void *buf_ptr, size_t size, int tag_mode) {
+	void **sptr, const void *buf_ptr, size_t size, int tag_mode) {
 	ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)*sptr;
 	asn_dec_rval_t rval;
 	ber_tlv_len_t length;
@@ -47,7 +47,7 @@ ber_decode_primitive(asn_codec_ctx_t *opt_codec_ctx,
 	/*
 	 * Make sure we have this length.
 	 */
-	buf_ptr = ((char *)buf_ptr) + rval.consumed;
+	buf_ptr = ((const char *)buf_ptr) + rval.consumed;
 	size -= rval.consumed;
 	if(length > (ber_tlv_len_t)size) {
 		rval.code = RC_WMORE;
@@ -238,7 +238,7 @@ xer_decode_primitive(asn_codec_ctx_t *opt_codec_ctx,
 	void **sptr,
 	size_t struct_size,
 	const char *opt_mname,
-	void *buf_ptr, size_t size,
+	const void *buf_ptr, size_t size,
 	xer_primitive_body_decoder_f *prim_body_decoder
 ) {
 	const char *xml_tag = opt_mname ? opt_mname : td->xml_tag;
diff --git a/skeletons/asn_codecs_prim.h b/skeletons/asn_codecs_prim.h
index ceadf511..b928b1a6 100644
--- a/skeletons/asn_codecs_prim.h
+++ b/skeletons/asn_codecs_prim.h
@@ -38,7 +38,7 @@ asn_dec_rval_t xer_decode_primitive(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *type_descriptor,
 	void **struct_ptr, size_t struct_size,
 	const char *opt_mname,
-	void *buf_ptr, size_t size,
+	const void *buf_ptr, size_t size,
 	xer_primitive_body_decoder_f *prim_body_decoder
 );
 
diff --git a/skeletons/ber_decoder.c b/skeletons/ber_decoder.c
index f0a35511..dc097fc5 100644
--- a/skeletons/ber_decoder.c
+++ b/skeletons/ber_decoder.c
@@ -8,7 +8,7 @@
 #undef	ADVANCE
 #define	ADVANCE(num_bytes)	do {					\
 		size_t num = num_bytes;					\
-		ptr = ((char *)ptr) + num;				\
+		ptr = ((const char *)ptr) + num;			\
 		size -= num;						\
 		consumed_myself += num;					\
 	} while(0)
@@ -30,7 +30,7 @@
 asn_dec_rval_t
 ber_decode(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *type_descriptor,
-	void **struct_ptr, void *ptr, size_t size) {
+	void **struct_ptr, const void *ptr, size_t size) {
 	asn_codec_ctx_t s_codec_ctx;
 
 	/*
@@ -58,7 +58,7 @@ ber_decode(asn_codec_ctx_t *opt_codec_ctx,
 asn_dec_rval_t
 ber_check_tags(asn_codec_ctx_t *opt_codec_ctx,
 		asn_TYPE_descriptor_t *td, asn_struct_ctx_t *opt_ctx,
-		void *ptr, size_t size, int tag_mode, int last_tag_form,
+		const void *ptr, size_t size, int tag_mode, int last_tag_form,
 		ber_tlv_len_t *last_length, int *opt_tlv_form) {
 	ssize_t consumed_myself = 0;
 	ssize_t tag_len;
@@ -128,7 +128,7 @@ ber_check_tags(asn_codec_ctx_t *opt_codec_ctx,
 		}
 		tlv_constr = BER_TLV_CONSTRUCTED(ptr);
 		len_len = ber_fetch_length(tlv_constr,
-			(char *)ptr + tag_len, size - tag_len, &tlv_len);
+			(const char *)ptr + tag_len, size - tag_len, &tlv_len);
 		switch(len_len) {
 		case -1: RETURN(RC_FAIL);
 		case 0: RETURN(RC_WMORE);
@@ -208,7 +208,7 @@ ber_check_tags(asn_codec_ctx_t *opt_codec_ctx,
 		 * Fetch and process L from TLV.
 		 */
 		len_len = ber_fetch_length(tlv_constr,
-			(char *)ptr + tag_len, size - tag_len, &tlv_len);
+			(const char *)ptr + tag_len, size - tag_len, &tlv_len);
 		ASN_DEBUG("Fetchinig len = %ld", (long)len_len);
 		switch(len_len) {
 		case -1: RETURN(RC_FAIL);
diff --git a/skeletons/ber_decoder.h b/skeletons/ber_decoder.h
index b835b0f5..af8d8e38 100644
--- a/skeletons/ber_decoder.h
+++ b/skeletons/ber_decoder.h
@@ -17,7 +17,7 @@ struct asn_codec_ctx_s;		/* Forward declaration */
 asn_dec_rval_t ber_decode(struct asn_codec_ctx_s *opt_codec_ctx,
 	struct asn_TYPE_descriptor_s *type_descriptor,
 	void **struct_ptr,	/* Pointer to a target structure's pointer */
-	void *buffer,		/* Data to be decoded */
+	const void *buffer,	/* Data to be decoded */
 	size_t size		/* Size of that buffer */
 	);
 
@@ -27,7 +27,7 @@ asn_dec_rval_t ber_decode(struct asn_codec_ctx_s *opt_codec_ctx,
 typedef asn_dec_rval_t (ber_type_decoder_f)(
 		struct asn_codec_ctx_s *opt_codec_ctx,
 		struct asn_TYPE_descriptor_s *type_descriptor,
-		void **struct_ptr, void *buf_ptr, size_t size,
+		void **struct_ptr, const void *buf_ptr, size_t size,
 		int tag_mode);
 
 /*******************************
@@ -45,7 +45,7 @@ asn_dec_rval_t ber_check_tags(
 		struct asn_codec_ctx_s *opt_codec_ctx,	/* optional context */
 		struct asn_TYPE_descriptor_s *type_dsc,
 		asn_struct_ctx_t *opt_ctx,	/* saved decoding context */
-		void *ptr, size_t size,
+		const void *ptr, size_t size,
 		int tag_mode,		/* {-1,0,1}: IMPLICIT, no, EXPLICIT */
 		int last_tag_form,	/* {-1,0:1}: any, primitive, constr */
 		ber_tlv_len_t *last_length,
diff --git a/skeletons/ber_tlv_length.c b/skeletons/ber_tlv_length.c
index 4f1ea88e..49343d37 100644
--- a/skeletons/ber_tlv_length.c
+++ b/skeletons/ber_tlv_length.c
@@ -7,15 +7,15 @@
 #include <ber_tlv_tag.h>
 
 ssize_t
-ber_fetch_length(int _is_constructed, void *bufptr, size_t size,
+ber_fetch_length(int _is_constructed, const void *bufptr, size_t size,
 		ber_tlv_len_t *len_r) {
-	uint8_t *buf = (uint8_t *)bufptr;
+	const uint8_t *buf = (const uint8_t *)bufptr;
 	unsigned oct;
 
 	if(size == 0)
 		return 0;	/* Want more */
 
-	oct = *(uint8_t *)buf;
+	oct = *(const uint8_t *)buf;
 	if((oct & 0x80) == 0) {
 		/*
 		 * Short definite length.
@@ -75,7 +75,7 @@ ber_fetch_length(int _is_constructed, void *bufptr, size_t size,
 
 ssize_t
 ber_skip_length(asn_codec_ctx_t *opt_codec_ctx,
-		int _is_constructed, void *ptr, size_t size) {
+		int _is_constructed, const void *ptr, size_t size) {
 	ber_tlv_len_t vlen;	/* Length of V in TLV */
 	ssize_t tl;		/* Length of L in TLV */
 	ssize_t ll;		/* Length of L in TLV */
@@ -116,7 +116,7 @@ ber_skip_length(asn_codec_ctx_t *opt_codec_ctx,
 	 * Indefinite length!
 	 */
 	ASN_DEBUG("Skipping indefinite length");
-	for(skip = ll, ptr = ((char *)ptr) + ll, size -= ll;;) {
+	for(skip = ll, ptr = ((const char *)ptr) + ll, size -= ll;;) {
 		ber_tlv_tag_t tag;
 
 		/* Fetch the tag */
@@ -125,7 +125,7 @@ ber_skip_length(asn_codec_ctx_t *opt_codec_ctx,
 
 		ll = ber_skip_length(opt_codec_ctx,
 			BER_TLV_CONSTRUCTED(ptr),
-			((char *)ptr) + tl, size - tl);
+			((const char *)ptr) + tl, size - tl);
 		if(ll <= 0) return ll;
 
 		skip += tl + ll;
@@ -135,11 +135,11 @@ ber_skip_length(asn_codec_ctx_t *opt_codec_ctx,
 		 * two consecutive 0 octets.
 		 * Check if it is true.
 		 */
-		if(((uint8_t *)ptr)[0] == 0
-		&& ((uint8_t *)ptr)[1] == 0)
+		if(((const uint8_t *)ptr)[0] == 0
+		&& ((const uint8_t *)ptr)[1] == 0)
 			return skip;
 
-		ptr = ((char *)ptr) + tl + ll;
+		ptr = ((const char *)ptr) + tl + ll;
 		size -= tl + ll;
  	}
 
diff --git a/skeletons/ber_tlv_length.h b/skeletons/ber_tlv_length.h
index 9d99e663..b7d6f747 100644
--- a/skeletons/ber_tlv_length.h
+++ b/skeletons/ber_tlv_length.h
@@ -17,7 +17,7 @@ typedef ssize_t ber_tlv_len_t;
  * On return with >0, len_r is constrained as -1..MAX, where -1 mean
  * that the value is of indefinite length.
  */
-ssize_t ber_fetch_length(int _is_constructed, void *bufptr, size_t size,
+ssize_t ber_fetch_length(int _is_constructed, const void *bufptr, size_t size,
 	ber_tlv_len_t *len_r);
 
 /*
@@ -30,7 +30,7 @@ ssize_t ber_fetch_length(int _is_constructed, void *bufptr, size_t size,
 struct asn_codec_ctx_s;	/* Forward declaration */
 ssize_t ber_skip_length(
 	struct asn_codec_ctx_s *opt_codec_ctx,	/* optional context */
-	int _is_constructed, void *bufptr, size_t size);
+	int _is_constructed, const void *bufptr, size_t size);
 
 /*
  * This function serializes the length (L from TLV) in DER format.
diff --git a/skeletons/ber_tlv_tag.c b/skeletons/ber_tlv_tag.c
index 43a2d1ad..42708760 100644
--- a/skeletons/ber_tlv_tag.c
+++ b/skeletons/ber_tlv_tag.c
@@ -7,7 +7,7 @@
 #include <errno.h>
 
 ssize_t
-ber_fetch_tag(void *ptr, size_t size, ber_tlv_tag_t *tag_r) {
+ber_fetch_tag(const void *ptr, size_t size, ber_tlv_tag_t *tag_r) {
 	ber_tlv_tag_t val;
 	ber_tlv_tag_t tclass;
 	size_t skipped;
@@ -15,7 +15,7 @@ ber_fetch_tag(void *ptr, size_t size, ber_tlv_tag_t *tag_r) {
 	if(size == 0)
 		return 0;
 
-	val = *(uint8_t *)ptr;
+	val = *(const uint8_t *)ptr;
 	tclass = (val >> 6);
 	if((val &= 0x1F) != 0x1F) {
 		/*
@@ -30,9 +30,10 @@ 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 = ((char *)ptr) + 1, skipped = 2;
-			skipped <= size; ptr = ((char *)ptr) + 1, skipped++) {
-		unsigned int oct = *(uint8_t *)ptr;
+	for(val = 0, ptr = ((const char *)ptr) + 1, skipped = 2;
+			skipped <= size;
+				ptr = ((const char *)ptr) + 1, skipped++) {
+		unsigned int oct = *(const uint8_t *)ptr;
 		if(oct & 0x80) {
 			val = (val << 7) | (oct & 0x7F);
 			/*
diff --git a/skeletons/ber_tlv_tag.h b/skeletons/ber_tlv_tag.h
index 52a11410..51c9a081 100644
--- a/skeletons/ber_tlv_tag.h
+++ b/skeletons/ber_tlv_tag.h
@@ -18,7 +18,7 @@ typedef unsigned ber_tlv_tag_t;	/* BER TAG from Tag-Length-Value */
  */
 #define	BER_TAG_CLASS(tag)	((tag) & 0x3)
 #define	BER_TAG_VALUE(tag)	((tag) >> 2)
-#define	BER_TLV_CONSTRUCTED(tagptr)	(((*(uint8_t *)tagptr) & 0x20)?1:0)
+#define	BER_TLV_CONSTRUCTED(tagptr)	(((*(const uint8_t *)tagptr)&0x20)?1:0)
 
 #define	BER_TAGS_EQUAL(tag1, tag2)	((tag1) == (tag2))
 
@@ -39,7 +39,7 @@ char *ber_tlv_tag_string(ber_tlv_tag_t tag);
  * 	-1:	Fatal error deciphering tag.
  *	>0:	Number of bytes used from bufptr. tag_r will contain the tag.
  */
-ssize_t ber_fetch_tag(void *bufptr, size_t size, ber_tlv_tag_t *tag_r);
+ssize_t ber_fetch_tag(const void *bufptr, size_t size, ber_tlv_tag_t *tag_r);
 
 /*
  * This function serializes the tag (T from TLV) in BER format.
diff --git a/skeletons/constr_CHOICE.c b/skeletons/constr_CHOICE.c
index 4e90bbd6..bcf4c162 100644
--- a/skeletons/constr_CHOICE.c
+++ b/skeletons/constr_CHOICE.c
@@ -34,7 +34,7 @@
 #undef	ADVANCE
 #define	ADVANCE(num_bytes)	do {		\
 		size_t num = num_bytes;		\
-		ptr = ((char *)ptr) + num;	\
+		ptr = ((const char *)ptr) + num;\
 		size -= num;			\
 		if(ctx->left >= 0)		\
 			ctx->left -= num;	\
@@ -99,7 +99,7 @@ _search4tag(const void *ap, const void *bp) {
  */
 asn_dec_rval_t
 CHOICE_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
-	void **struct_ptr, void *ptr, size_t size, int tag_mode) {
+	void **struct_ptr, const void *ptr, size_t size, int tag_mode) {
 	/*
 	 * Bring closer parts of structure description.
 	 */
@@ -211,7 +211,8 @@ CHOICE_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 
 				skip = ber_skip_length(opt_codec_ctx,
 					BER_TLV_CONSTRUCTED(ptr),
-					(char *)ptr + tag_len, LEFT - tag_len);
+					(const char *)ptr + tag_len,
+					LEFT - tag_len);
 
 				switch(skip) {
 				case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE);
@@ -320,13 +321,13 @@ CHOICE_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 			/*
 			 * Expected <0><0>...
 			 */
-			if(((uint8_t *)ptr)[0] == 0) {
+			if(((const uint8_t *)ptr)[0] == 0) {
 				if(LEFT < 2) {
 					if(SIZE_VIOLATION)
 						RETURN(RC_FAIL);
 					else
 						RETURN(RC_WMORE);
-				} else if(((uint8_t *)ptr)[1] == 0) {
+				} else if(((const uint8_t *)ptr)[1] == 0) {
 					/*
 					 * Correctly finished with <0><0>.
 					 */
@@ -543,7 +544,7 @@ CHOICE_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 #undef	XER_ADVANCE
 #define	XER_ADVANCE(num_bytes)	do {			\
 		size_t num = num_bytes;			\
-		buf_ptr = ((char *)buf_ptr) + num;	\
+		buf_ptr = ((const char *)buf_ptr) + num;\
 		size -= num;				\
 		consumed_myself += num;			\
 	} while(0)
@@ -554,7 +555,7 @@ CHOICE_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 asn_dec_rval_t
 CHOICE_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 	void **struct_ptr, const char *opt_mname,
-		void *buf_ptr, size_t size) {
+		const void *buf_ptr, size_t size) {
 	/*
 	 * Bring closer parts of structure description.
 	 */
diff --git a/skeletons/constr_SEQUENCE.c b/skeletons/constr_SEQUENCE.c
index baecf2d2..d9526676 100644
--- a/skeletons/constr_SEQUENCE.c
+++ b/skeletons/constr_SEQUENCE.c
@@ -34,7 +34,7 @@
 #undef	ADVANCE
 #define	ADVANCE(num_bytes)	do {		\
 		size_t num = num_bytes;		\
-		ptr = ((char *)ptr) + num;	\
+		ptr = ((const char *)ptr) + num;\
 		size -= num;			\
 		if(ctx->left >= 0)		\
 			ctx->left -= num;	\
@@ -110,7 +110,7 @@ _t2e_cmp(const void *ap, const void *bp) {
  */
 asn_dec_rval_t
 SEQUENCE_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
-	void **struct_ptr, void *ptr, size_t size, int tag_mode) {
+	void **struct_ptr, const void *ptr, size_t size, int tag_mode) {
 	/*
 	 * Bring closer parts of structure description.
 	 */
@@ -240,13 +240,13 @@ SEQUENCE_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		case -1: RETURN(RC_FAIL);
 		}
 
-		if(ctx->left < 0 && ((uint8_t *)ptr)[0] == 0) {
+		if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) {
 			if(LEFT < 2) {
 				if(SIZE_VIOLATION)
 					RETURN(RC_FAIL);
 				else
 					RETURN(RC_WMORE);
-			} else if(((uint8_t *)ptr)[1] == 0) {
+			} else if(((const uint8_t *)ptr)[1] == 0) {
 			ASN_DEBUG("edx = %d, opt = %d, ec=%d",
 				edx, elements[edx].optional,
 				td->elements_count);
@@ -362,7 +362,8 @@ SEQUENCE_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 
 				skip = ber_skip_length(opt_codec_ctx,
 					BER_TLV_CONSTRUCTED(ptr),
-					(char *)ptr + tag_len, LEFT - tag_len);
+					(const char *)ptr + tag_len,
+					LEFT - tag_len);
 				ASN_DEBUG("Skip length %d in %s",
 					(int)skip, td->name);
 				switch(skip) {
@@ -455,13 +456,13 @@ SEQUENCE_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 			 * If expected <0><0>...
 			 */
 			if(ctx->left < 0
-				&& ((uint8_t *)ptr)[0] == 0) {
+				&& ((const uint8_t *)ptr)[0] == 0) {
 				if(LEFT < 2) {
 					if(SIZE_VIOLATION)
 						RETURN(RC_FAIL);
 					else
 						RETURN(RC_WMORE);
-				} else if(((uint8_t *)ptr)[1] == 0) {
+				} else if(((const uint8_t *)ptr)[1] == 0) {
 					/*
 					 * Correctly finished with <0><0>.
 					 */
@@ -484,7 +485,7 @@ SEQUENCE_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 
 			ll = ber_skip_length(opt_codec_ctx,
 				BER_TLV_CONSTRUCTED(ptr),
-				(char *)ptr + tl, LEFT - tl);
+				(const char *)ptr + tl, LEFT - tl);
 			switch(ll) {
 			case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE);
 				/* Fall through */
@@ -593,7 +594,7 @@ SEQUENCE_encode_der(asn_TYPE_descriptor_t *td,
 #undef	XER_ADVANCE
 #define	XER_ADVANCE(num_bytes)	do {			\
 		size_t num = num_bytes;			\
-		buf_ptr = ((char *)buf_ptr) + num;	\
+		buf_ptr = ((const char *)buf_ptr) + num;\
 		size -= num;				\
 		consumed_myself += num;			\
 	} while(0)
@@ -604,7 +605,7 @@ SEQUENCE_encode_der(asn_TYPE_descriptor_t *td,
 asn_dec_rval_t
 SEQUENCE_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 	void **struct_ptr, const char *opt_mname,
-		void *buf_ptr, size_t size) {
+		const void *buf_ptr, size_t size) {
 	/*
 	 * Bring closer parts of structure description.
 	 */
diff --git a/skeletons/constr_SET.c b/skeletons/constr_SET.c
index 4099186c..1b2f85f8 100644
--- a/skeletons/constr_SET.c
+++ b/skeletons/constr_SET.c
@@ -42,7 +42,7 @@ static int _SET_is_populated(asn_TYPE_descriptor_t *td, void *st);
 #undef	ADVANCE
 #define	ADVANCE(num_bytes)	do {		\
 		size_t num = num_bytes;		\
-		ptr = ((char *)ptr) + num;	\
+		ptr = ((const char *)ptr) + num;\
 		size -= num;			\
 		if(ctx->left >= 0)		\
 			ctx->left -= num;	\
@@ -101,7 +101,7 @@ _t2e_cmp(const void *ap, const void *bp) {
  */
 asn_dec_rval_t
 SET_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
-	void **struct_ptr, void *ptr, size_t size, int tag_mode) {
+	void **struct_ptr, const void *ptr, size_t size, int tag_mode) {
 	/*
 	 * Bring closer parts of structure description.
 	 */
@@ -211,13 +211,13 @@ SET_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		case -1: RETURN(RC_FAIL);
 		}
 
-		if(ctx->left < 0 && ((uint8_t *)ptr)[0] == 0) {
+		if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) {
 			if(LEFT < 2) {
 				if(SIZE_VIOLATION)
 					RETURN(RC_FAIL);
 				else
 					RETURN(RC_WMORE);
-			} else if(((uint8_t *)ptr)[1] == 0) {
+			} else if(((const uint8_t *)ptr)[1] == 0) {
 				/*
 				 * Found the terminator of the
 				 * indefinite length structure.
@@ -253,7 +253,7 @@ SET_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 
 			skip = ber_skip_length(opt_codec_ctx,
 				BER_TLV_CONSTRUCTED(ptr),
-				(char *)ptr + tag_len, LEFT - tag_len);
+				(const char *)ptr + tag_len, LEFT - tag_len);
 
 			switch(skip) {
 			case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE);
@@ -345,13 +345,13 @@ SET_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 			 * If expected <0><0>...
 			 */
 			if(ctx->left < 0
-				&& ((uint8_t *)ptr)[0] == 0) {
+				&& ((const uint8_t *)ptr)[0] == 0) {
 				if(LEFT < 2) {
 					if(SIZE_VIOLATION)
 						RETURN(RC_FAIL);
 					else
 						RETURN(RC_WMORE);
-				} else if(((uint8_t *)ptr)[1] == 0) {
+				} else if(((const uint8_t *)ptr)[1] == 0) {
 					/*
 					 * Correctly finished with <0><0>.
 					 */
@@ -366,13 +366,13 @@ SET_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 				ASN_DEBUG("Unexpected continuation "
 					"of a non-extensible type %s "
 					"(ptr=%02x)",
-					td->name, *(uint8_t *)ptr);
+					td->name, *(const uint8_t *)ptr);
 				RETURN(RC_FAIL);
 			}
 
 			ll = ber_skip_length(opt_codec_ctx,
 				BER_TLV_CONSTRUCTED(ptr),
-				(char *)ptr + tl, LEFT - tl);
+				(const char *)ptr + tl, LEFT - tl);
 			switch(ll) {
 			case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE);
 				/* Fall through */
@@ -573,7 +573,7 @@ SET_encode_der(asn_TYPE_descriptor_t *td,
 #undef	XER_ADVANCE
 #define	XER_ADVANCE(num_bytes)	do {			\
 		size_t num = num_bytes;			\
-		buf_ptr = ((char *)buf_ptr) + num;	\
+		buf_ptr = ((const char *)buf_ptr) + num;\
 		size -= num;				\
 		consumed_myself += num;			\
 	} while(0)
@@ -584,7 +584,7 @@ SET_encode_der(asn_TYPE_descriptor_t *td,
 asn_dec_rval_t
 SET_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 	void **struct_ptr, const char *opt_mname,
-		void *buf_ptr, size_t size) {
+		const void *buf_ptr, size_t size) {
 	/*
 	 * Bring closer parts of structure description.
 	 */
diff --git a/skeletons/constr_SET_OF.c b/skeletons/constr_SET_OF.c
index c6ec6af2..84892e78 100644
--- a/skeletons/constr_SET_OF.c
+++ b/skeletons/constr_SET_OF.c
@@ -34,7 +34,7 @@
 #undef	ADVANCE
 #define	ADVANCE(num_bytes)	do {		\
 		size_t num = num_bytes;		\
-		ptr = ((char *)ptr) + num;	\
+		ptr = ((const char *)ptr) + num;\
 		size -= num;			\
 		if(ctx->left >= 0)		\
 			ctx->left -= num;	\
@@ -67,7 +67,7 @@
  */
 asn_dec_rval_t
 SET_OF_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
-	void **struct_ptr, void *ptr, size_t size, int tag_mode) {
+	void **struct_ptr, const void *ptr, size_t size, int tag_mode) {
 	/*
 	 * Bring closer parts of structure description.
 	 */
@@ -166,13 +166,13 @@ SET_OF_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		case -1: RETURN(RC_FAIL);
 		}
 
-		if(ctx->left < 0 && ((uint8_t *)ptr)[0] == 0) {
+		if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) {
 			if(LEFT < 2) {
 				if(SIZE_VIOLATION)
 					RETURN(RC_FAIL);
 				else
 					RETURN(RC_WMORE);
-			} else if(((uint8_t *)ptr)[1] == 0) {
+			} else if(((const uint8_t *)ptr)[1] == 0) {
 				/*
 				 * Found the terminator of the
 				 * indefinite length structure.
@@ -241,15 +241,15 @@ SET_OF_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		 */
 		while(ctx->left < 0) {
 			if(LEFT < 2) {
-				if(LEFT > 0 && ((char *)ptr)[0] != 0) {
+				if(LEFT > 0 && ((const char *)ptr)[0] != 0) {
 					/* Unexpected tag */
 					RETURN(RC_FAIL);
 				} else {
 					RETURN(RC_WMORE);
 				}
 			}
-			if(((char *)ptr)[0] == 0
-			&& ((char *)ptr)[1] == 0) {
+			if(((const char *)ptr)[0] == 0
+			&& ((const char *)ptr)[1] == 0) {
 				ADVANCE(2);
 				ctx->left++;
 			} else {
@@ -452,7 +452,7 @@ SET_OF_encode_der(asn_TYPE_descriptor_t *td, void *ptr,
 #undef	XER_ADVANCE
 #define	XER_ADVANCE(num_bytes)	do {			\
 		size_t num = num_bytes;			\
-		buf_ptr = ((char *)buf_ptr) + num;	\
+		buf_ptr = ((const char *)buf_ptr) + num;\
 		size -= num;				\
 		consumed_myself += num;			\
 	} while(0)
@@ -463,7 +463,7 @@ SET_OF_encode_der(asn_TYPE_descriptor_t *td, void *ptr,
 asn_dec_rval_t
 SET_OF_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 	void **struct_ptr, const char *opt_mname,
-		void *buf_ptr, size_t size) {
+		const void *buf_ptr, size_t size) {
 	/*
 	 * Bring closer parts of structure description.
 	 */
diff --git a/skeletons/xer_decoder.c b/skeletons/xer_decoder.c
index 64566668..d0a08783 100644
--- a/skeletons/xer_decoder.c
+++ b/skeletons/xer_decoder.c
@@ -10,7 +10,7 @@
  */
 asn_dec_rval_t
 xer_decode(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
-		void **struct_ptr, void *buffer, size_t size) {
+		void **struct_ptr, const void *buffer, size_t size) {
 	asn_codec_ctx_t s_codec_ctx;
 
 	/*
diff --git a/skeletons/xer_decoder.h b/skeletons/xer_decoder.h
index 4f6b537c..e372bbd6 100644
--- a/skeletons/xer_decoder.h
+++ b/skeletons/xer_decoder.h
@@ -15,7 +15,7 @@ struct asn_TYPE_descriptor_s;	/* Forward declaration */
 asn_dec_rval_t xer_decode(struct asn_codec_ctx_s *opt_codec_ctx,
 	struct asn_TYPE_descriptor_s *type_descriptor,
 	void **struct_ptr,	/* Pointer to a target structure's pointer */
-	void *buffer,		/* Data to be decoded */
+	const void *buffer,	/* Data to be decoded */
 	size_t size		/* Size of that buffer */
 	);
 
@@ -26,7 +26,7 @@ typedef asn_dec_rval_t (xer_type_decoder_f)(asn_codec_ctx_t *opt_codec_ctx,
 		struct asn_TYPE_descriptor_s *type_descriptor,
 		void **struct_ptr,
 		const char *opt_mname,	/* Member name */
-		void *buf_ptr, size_t size
+		const void *buf_ptr, size_t size
 	);
 
 /*******************************
@@ -61,7 +61,7 @@ asn_dec_rval_t xer_decode_general(asn_codec_ctx_t *opt_codec_ctx,
   typedef enum pxer_chunk_type {
 	PXER_TAG,	/* Complete XER tag */
 	PXER_TEXT,	/* Plain text between XER tags */
-	PXER_COMMENT,	/* A comment, may be part of */
+	PXER_COMMENT	/* A comment, may be part of */
   } pxer_chunk_type_e;
 ssize_t xer_next_token(int *stateContext,
 	const void *buffer, size_t size, pxer_chunk_type_e *_ch_type);
@@ -77,7 +77,7 @@ ssize_t xer_next_token(int *stateContext,
 	XCT__UNK__MASK	= 4,	/* Mask of everything unexpected */
 	XCT_UNKNOWN_OP	= 5,	/* Unexpected <opening> tag */
 	XCT_UNKNOWN_CL	= 6,	/* Unexpected </closing> tag */
-	XCT_UNKNOWN_BO	= 7,	/* Unexpected <modified/> tag */
+	XCT_UNKNOWN_BO	= 7	/* Unexpected <modified/> tag */
   } xer_check_tag_e;
 xer_check_tag_e xer_check_tag(const void *buf_ptr, int size,
 		const char *need_tag);
-- 
GitLab