|
Lines 989-996
xdr_xcode_array2(struct xdr_buf *buf, un
Link Here
|
| 989 |
return -EINVAL; |
989 |
return -EINVAL; |
| 990 |
} else { |
990 |
} else { |
| 991 |
if (xdr_decode_word(buf, base, &desc->array_len) != 0 || |
991 |
if (xdr_decode_word(buf, base, &desc->array_len) != 0 || |
| 992 |
(unsigned long) base + 4 + desc->array_len * |
992 |
desc->array_len > (buf->len - base - 4) / desc->elem_size) |
| 993 |
desc->elem_size > buf->len) |
|
|
| 994 |
return -EINVAL; |
993 |
return -EINVAL; |
| 995 |
} |
994 |
} |
| 996 |
base += 4; |
995 |
base += 4; |
|
Lines 1158-1165
int
Link Here
|
| 1158 |
xdr_encode_array2(struct xdr_buf *buf, unsigned int base, |
1157 |
xdr_encode_array2(struct xdr_buf *buf, unsigned int base, |
| 1159 |
struct xdr_array2_desc *desc) |
1158 |
struct xdr_array2_desc *desc) |
| 1160 |
{ |
1159 |
{ |
| 1161 |
if ((unsigned long) base + 4 + desc->array_len * desc->elem_size > |
1160 |
if (buf->head->iov_len + buf->page_len + buf->tail->iov_len - |
| 1162 |
buf->head->iov_len + buf->page_len + buf->tail->iov_len) |
1161 |
base < desc->array_len * desc->elem_size + 4) |
| 1163 |
return -EINVAL; |
1162 |
return -EINVAL; |
| 1164 |
|
1163 |
|
| 1165 |
return xdr_xcode_array2(buf, base, desc, 1); |
1164 |
return xdr_xcode_array2(buf, base, desc, 1); |