net: Correct size of NFS buffers
authorJoe Hershberger <joe.hershberger@ni.com>
Wed, 4 Jul 2018 00:22:54 +0000 (19:22 -0500)
committerJoe Hershberger <joe.hershberger@ni.com>
Thu, 26 Jul 2018 19:08:19 +0000 (14:08 -0500)
Reported-by: Coverity (CID: 152888)
Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
net/nfs.h

index 6359cd2848e56abe7bdd39afbdea7c6aa7eaae3e..a377c90088388b94e77cf23226e38a47ffd2021b 100644 (file)
--- a/net/nfs.h
+++ b/net/nfs.h
@@ -42,6 +42,7 @@
  * case, most NFS servers are optimized for a power of 2.
  */
 #define NFS_READ_SIZE  1024    /* biggest power of two that fits Ether frame */
+#define NFS_MAX_ATTRS  26
 
 /* Values for Accept State flag on RPC answers (See: rfc1831) */
 enum rpc_accept_stat {
@@ -55,7 +56,8 @@ enum rpc_accept_stat {
 
 struct rpc_t {
        union {
-               uint8_t data[2048];
+               uint8_t data[NFS_READ_SIZE + (6 + NFS_MAX_ATTRS) *
+                       sizeof(uint32_t)];
                struct {
                        uint32_t id;
                        uint32_t type;
@@ -72,7 +74,8 @@ struct rpc_t {
                        uint32_t verifier;
                        uint32_t v2;
                        uint32_t astatus;
-                       uint32_t data[NFS_READ_SIZE];
+                       uint32_t data[NFS_READ_SIZE / sizeof(uint32_t) +
+                               NFS_MAX_ATTRS];
                } reply;
        } u;
 } __attribute__((packed));