summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormiod <miod@openbsd.org>2008-07-29 19:13:19 +0000
committermiod <miod@openbsd.org>2008-07-29 19:13:19 +0000
commit480a03289f1b12007b3d112622375d37bdd8f45f (patch)
tree2d0d0971d35cb958e086c5e80568922af99efd23
parentsync (diff)
downloadwireguard-openbsd-480a03289f1b12007b3d112622375d37bdd8f45f.tar.xz
wireguard-openbsd-480a03289f1b12007b3d112622375d37bdd8f45f.zip
Check for multiplication overflow in drm_calloc(). ok oga@
-rw-r--r--sys/dev/pci/drm/drm_memory.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/dev/pci/drm/drm_memory.c b/sys/dev/pci/drm/drm_memory.c
index 44714ca310b..8d999638b19 100644
--- a/sys/dev/pci/drm/drm_memory.c
+++ b/sys/dev/pci/drm/drm_memory.c
@@ -57,8 +57,10 @@ drm_alloc(size_t size, int area)
void *
drm_calloc(size_t nmemb, size_t size, int area)
{
- /* XXX overflow checking */
- return malloc(size * nmemb, M_DRM, M_NOWAIT | M_ZERO);
+ if (SIZE_MAX / nmemb < size)
+ return (NULL);
+ else
+ return malloc(size * nmemb, M_DRM, M_NOWAIT | M_ZERO);
}
void *