summaryrefslogtreecommitdiffstats
path: root/sys/compat/ndis/subr_ndis.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/compat/ndis/subr_ndis.c')
-rw-r--r--sys/compat/ndis/subr_ndis.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/sys/compat/ndis/subr_ndis.c b/sys/compat/ndis/subr_ndis.c
index 975e6ee..a396a7e 100644
--- a/sys/compat/ndis/subr_ndis.c
+++ b/sys/compat/ndis/subr_ndis.c
@@ -1017,12 +1017,18 @@ ndis_query_resources(status, adapter, list, buflen)
{
ndis_miniport_block *block;
struct ndis_softc *sc;
+ int rsclen;
block = (ndis_miniport_block *)adapter;
sc = (struct ndis_softc *)block->nmb_ifp;
-
- *buflen = sizeof(ndis_resource_list) +
+
+ rsclen = sizeof(ndis_resource_list) +
(sizeof(cm_partial_resource_desc) * (sc->ndis_rescnt - 1));
+ if (*buflen < rsclen) {
+ *buflen = rsclen;
+ *status = NDIS_STATUS_INVALID_LENGTH;
+ return;
+ }
bcopy((char *)block->nmb_rlist, (char *)list, *buflen);
*status = NDIS_STATUS_SUCCESS;
@@ -2415,4 +2421,3 @@ image_patch_table ndis_functbl[] = {
{ NULL, NULL },
};
-
OpenPOWER on IntegriCloud