diff options
| author | Chuck Lever <chuck.lever@oracle.com> | 2007-09-26 14:38:10 -0400 |
|---|---|---|
| committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2007-10-09 17:20:30 -0400 |
| commit | 67f97d83bfcca9d9f8fbeeb14e7c644a82b24e12 (patch) | |
| tree | a33db52992e4f916618d629eef94dd811e7d42b1 | |
| parent | afde94f398b62c8596a8d0cbfc25798f0b52a371 (diff) | |
SUNRPC: Use correct type in buffer length calculations
Use correct type signage in gss_krb5_remove_padding() when doing length
calculations. Both xdr_buf.len and iov.iov_len are size_t, which is
unsigned; so use an unsigned type for our temporary length variable to
ensure we don't overflow it..
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
| -rw-r--r-- | net/sunrpc/auth_gss/gss_krb5_wrap.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/net/sunrpc/auth_gss/gss_krb5_wrap.c b/net/sunrpc/auth_gss/gss_krb5_wrap.c index 42b3220bed39..8bd074df27d3 100644 --- a/net/sunrpc/auth_gss/gss_krb5_wrap.c +++ b/net/sunrpc/auth_gss/gss_krb5_wrap.c | |||
| @@ -42,7 +42,7 @@ gss_krb5_remove_padding(struct xdr_buf *buf, int blocksize) | |||
| 42 | { | 42 | { |
| 43 | u8 *ptr; | 43 | u8 *ptr; |
| 44 | u8 pad; | 44 | u8 pad; |
| 45 | int len = buf->len; | 45 | size_t len = buf->len; |
| 46 | 46 | ||
| 47 | if (len <= buf->head[0].iov_len) { | 47 | if (len <= buf->head[0].iov_len) { |
| 48 | pad = *(u8 *)(buf->head[0].iov_base + len - 1); | 48 | pad = *(u8 *)(buf->head[0].iov_base + len - 1); |
| @@ -53,9 +53,9 @@ gss_krb5_remove_padding(struct xdr_buf *buf, int blocksize) | |||
| 53 | } else | 53 | } else |
| 54 | len -= buf->head[0].iov_len; | 54 | len -= buf->head[0].iov_len; |
| 55 | if (len <= buf->page_len) { | 55 | if (len <= buf->page_len) { |
| 56 | int last = (buf->page_base + len - 1) | 56 | unsigned int last = (buf->page_base + len - 1) |
| 57 | >>PAGE_CACHE_SHIFT; | 57 | >>PAGE_CACHE_SHIFT; |
| 58 | int offset = (buf->page_base + len - 1) | 58 | unsigned int offset = (buf->page_base + len - 1) |
| 59 | & (PAGE_CACHE_SIZE - 1); | 59 | & (PAGE_CACHE_SIZE - 1); |
| 60 | ptr = kmap_atomic(buf->pages[last], KM_USER0); | 60 | ptr = kmap_atomic(buf->pages[last], KM_USER0); |
| 61 | pad = *(ptr + offset); | 61 | pad = *(ptr + offset); |
