diff --git a/tools/net/sunrpc/xdrgen/templates/C/typedef/decoder/variable_length_opaque.j2 b/tools/net/sunrpc/xdrgen/templates/C/typedef/decoder/variable_length_opaque.j2
index c1b7ad84f99c28437645dab016090730d53d9c7f..f28f8b228ad54d694d9320cea4e311b300fd9045 100644
--- a/tools/net/sunrpc/xdrgen/templates/C/typedef/decoder/variable_length_opaque.j2
+++ b/tools/net/sunrpc/xdrgen/templates/C/typedef/decoder/variable_length_opaque.j2
@@ -13,5 +13,5 @@ xdrgen_decode_{{ name }}(struct xdr_stream *xdr, {{ classifier }}{{ name }} *ptr
 {% if annotate %}
 	/* (variable-length opaque) */
 {% endif %}
-	return xdr_stream_decode_opaque(xdr, ptr->data, ptr->len) >= 0;
+	return xdrgen_decode_opaque(xdr, ptr, {{ maxsize }});
 };
diff --git a/tools/net/sunrpc/xdrgen/templates/C/typedef/decoder/variable_length_string.j2 b/tools/net/sunrpc/xdrgen/templates/C/typedef/decoder/variable_length_string.j2
index 937286d7668890bbd6c41bf5152e1e1f14a94017..56c5a17d6a70d5269d32275e9591124afa6ff474 100644
--- a/tools/net/sunrpc/xdrgen/templates/C/typedef/decoder/variable_length_string.j2
+++ b/tools/net/sunrpc/xdrgen/templates/C/typedef/decoder/variable_length_string.j2
@@ -13,5 +13,5 @@ xdrgen_decode_{{ name }}(struct xdr_stream *xdr, {{ classifier }}{{ name }} *ptr
 {% if annotate %}
 	/* (variable-length string) */
 {% endif %}
-	return xdr_stream_decode_opaque(xdr, ptr->data, ptr->len) >= 0;
+	return xdrgen_decode_string(xdr, ptr, {{ maxsize }});
 };