]> git.dujemihanovic.xyz Git - linux.git/commitdiff
xdrgen: Fix return code checking in built-in XDR decoders
authorChuck Lever <chuck.lever@oracle.com>
Tue, 10 Sep 2024 19:31:19 +0000 (15:31 -0400)
committerChuck Lever <chuck.lever@oracle.com>
Fri, 20 Sep 2024 23:31:39 +0000 (19:31 -0400)
xdr_stream_encode_u32() returns XDR_UNIT on success.
xdr_stream_decode_u32() returns zero or -EMSGSIZE, but never
XDR_UNIT.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
include/linux/sunrpc/xdrgen/_builtins.h
tools/net/sunrpc/xdrgen/templates/C/pointer/decoder/variable_length_array.j2
tools/net/sunrpc/xdrgen/templates/C/struct/decoder/variable_length_array.j2
tools/net/sunrpc/xdrgen/templates/C/union/decoder/variable_length_array.j2

index 68746c59fc9af5ccaa47afdabf307478d02f47dc..66ca3ece951ab98816ec068ddb877778e1198540 100644 (file)
@@ -184,7 +184,7 @@ xdrgen_decode_string(struct xdr_stream *xdr, string *ptr, u32 maxlen)
        __be32 *p;
        u32 len;
 
-       if (unlikely(xdr_stream_decode_u32(xdr, &len) != XDR_UNIT))
+       if (unlikely(xdr_stream_decode_u32(xdr, &len) < 0))
                return false;
        if (unlikely(maxlen && len > maxlen))
                return false;
@@ -215,7 +215,7 @@ xdrgen_decode_opaque(struct xdr_stream *xdr, opaque *ptr, u32 maxlen)
        __be32 *p;
        u32 len;
 
-       if (unlikely(xdr_stream_decode_u32(xdr, &len) != XDR_UNIT))
+       if (unlikely(xdr_stream_decode_u32(xdr, &len) < 0))
                return false;
        if (unlikely(maxlen && len > maxlen))
                return false;
index f54ccd136762ac8d2894ef495b4209e2cf0e8f78..2f943909cdf758a9710c70d4571aa1eff7b76f9d 100644 (file)
@@ -2,7 +2,7 @@
 {% if annotate %}
        /* member {{ name }} (variable-length array) */
 {% endif %}
-       if (xdr_stream_decode_u32(xdr, &ptr->{{ name }}.count) != XDR_UNIT)
+       if (xdr_stream_decode_u32(xdr, &ptr->{{ name }}.count) < 0)
                return false;
 {% if maxsize != "0" %}
        if (ptr->{{ name }}.count > {{ maxsize }})
index f54ccd136762ac8d2894ef495b4209e2cf0e8f78..2f943909cdf758a9710c70d4571aa1eff7b76f9d 100644 (file)
@@ -2,7 +2,7 @@
 {% if annotate %}
        /* member {{ name }} (variable-length array) */
 {% endif %}
-       if (xdr_stream_decode_u32(xdr, &ptr->{{ name }}.count) != XDR_UNIT)
+       if (xdr_stream_decode_u32(xdr, &ptr->{{ name }}.count) < 0)
                return false;
 {% if maxsize != "0" %}
        if (ptr->{{ name }}.count > {{ maxsize }})
index eee2b9a68e27cd0dcfd7a764ccd4f6d9bb837ef1..51ad736d2530b7f172f7e818631509c492cb114d 100644 (file)
@@ -2,7 +2,7 @@
 {% if annotate %}
                /* member {{ name }} (variable-length array) */
 {% endif %}
-               if (xdr_stream_decode_u32(xdr, &count) != XDR_UNIT)
+               if (xdr_stream_decode_u32(xdr, &count) < 0)
                        return false;
                if (count > {{ maxsize }})
                        return false;