]> git.baikalelectronics.ru Git - kernel.git/commit
SUNRPC: fix copying of multiple pages in gss_read_proxy_verf()
authorMartijn de Gouw <martijn.de.gouw@prodrive-technologies.com>
Mon, 19 Oct 2020 11:42:27 +0000 (13:42 +0200)
committerJ. Bruce Fields <bfields@redhat.com>
Tue, 20 Oct 2020 17:21:30 +0000 (13:21 -0400)
commit35e7399046ecb0d2eaa10c0590d844c67b73a3af
treec5a094ec951b61a0613c7c5430e119b92882ae79
parent4e1b3452f2df3ade664845c94af2c549878ea39a
SUNRPC: fix copying of multiple pages in gss_read_proxy_verf()

When the passed token is longer than 4032 bytes, the remaining part
of the token must be copied from the rqstp->rq_arg.pages. But the
copy must make sure it happens in a consecutive way.

With the existing code, the first memcpy copies 'length' bytes from
argv->iobase, but since the header is in front, this never fills the
whole first page of in_token->pages.

The mecpy in the loop copies the following bytes, but starts writing at
the next page of in_token->pages.  This leaves the last bytes of page 0
unwritten.

Symptoms were that users with many groups were not able to access NFS
exports, when using Active Directory as the KDC.

Signed-off-by: Martijn de Gouw <martijn.de.gouw@prodrive-technologies.com>
Fixes: f0409a21e315 "SUNRPC: Fix svcauth_gss_proxy_init()"
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
net/sunrpc/auth_gss/svcauth_gss.c