ksmbd: fix error code in ndr_read_int32()
authorDan Carpenter <dan.carpenter@oracle.com>
Tue, 30 Nov 2021 12:50:47 +0000 (15:50 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 29 Dec 2021 11:28:57 +0000 (12:28 +0100)
commit ef399469d9ceb9f2171cdd79863f9434b9fa3edc upstream.

This is a failure path and it should return -EINVAL instead of success.
Otherwise it could result in the caller using uninitialized memory.

Fixes: 303fff2b8c77 ("ksmbd: add validation for ndr read/write functions")
Cc: stable@vger.kernel.org # v5.15
Acked-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/ksmbd/ndr.c

index 8317f7ca402b4f5864a1e70b7d31152bebc44e37..5052be9261d91efb810757256efb913eb97ebc7b 100644 (file)
@@ -148,7 +148,7 @@ static int ndr_read_int16(struct ndr *n, __u16 *value)
 static int ndr_read_int32(struct ndr *n, __u32 *value)
 {
        if (n->offset + sizeof(__u32) > n->length)
-               return 0;
+               return -EINVAL;
 
        if (value)
                *value = le32_to_cpu(*(__le32 *)ndr_get_field(n));