diff --git a/libasn1compiler/asn1c_C.c b/libasn1compiler/asn1c_C.c
index ec90e75fdcbc52ec86c176e6762b3c1a05b6172e..7d66b1b1944464bc8df2861f52202feaa172ce98 100644
--- a/libasn1compiler/asn1c_C.c
+++ b/libasn1compiler/asn1c_C.c
@@ -1117,7 +1117,7 @@ asn1c_lang_C_type_SIMPLE_TYPE(arg_t *arg) {
 	if(HIDE_INNER_DEFS) OUT("_%d", expr->_type_unique_index);
 	OUT("_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,\n");
 	INDENTED(
-	OUT("\tvoid **structure, void *bufptr, size_t size, int tag_mode) {\n");
+	OUT("\tvoid **structure, const void *bufptr, size_t size, int tag_mode) {\n");
 	OUT("%s_%d_inherit_TYPE_descriptor(td);\n",
 		p, expr->_type_unique_index);
 	OUT("return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);\n");
@@ -1148,7 +1148,7 @@ asn1c_lang_C_type_SIMPLE_TYPE(arg_t *arg) {
 	if(HIDE_INNER_DEFS) OUT("_%d", expr->_type_unique_index);
 	OUT("_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,\n");
 	INDENTED(
-	OUT("\tvoid **structure, const char *opt_mname, void *bufptr, size_t size) {\n");
+	OUT("\tvoid **structure, const char *opt_mname, const void *bufptr, size_t size) {\n");
 	OUT("%s_%d_inherit_TYPE_descriptor(td);\n",
 		p, expr->_type_unique_index);
 	OUT("return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);\n");