aboutsummaryrefslogtreecommitdiff
path: root/sys/kern/subr_rman.c
diff options
context:
space:
mode:
authorDon Lewis <truckman@FreeBSD.org>2014-05-12 20:22:42 +0000
committerDon Lewis <truckman@FreeBSD.org>2014-05-12 20:22:42 +0000
commit11e104c50f443e34435715acbb7b58c3d9252bf5 (patch)
tree877c7e8eaff7e8078d3435e14d4c65f53ae93f29 /sys/kern/subr_rman.c
parentae866603c77899efeb618baec79eaf71d233ba50 (diff)
downloadsrc-11e104c50f443e34435715acbb7b58c3d9252bf5.tar.gz
src-11e104c50f443e34435715acbb7b58c3d9252bf5.zip
Be even more paranoid about overflow.
Requested by: ache
Notes
Notes: svn path=/head/; revision=265931
Diffstat (limited to 'sys/kern/subr_rman.c')
-rw-r--r--sys/kern/subr_rman.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/kern/subr_rman.c b/sys/kern/subr_rman.c
index b53030a5574b..4101c867a8b1 100644
--- a/sys/kern/subr_rman.c
+++ b/sys/kern/subr_rman.c
@@ -466,8 +466,8 @@ rman_reserve_resource_bound(struct rman *rm, u_long start, u_long end,
}
amask = (1ul << RF_ALIGNMENT(flags)) - 1;
- if (start + amask < start) {
- DPRINTF(("start+amask wrapped around\n"));
+ if (start > ULONG_MAX - amask) {
+ DPRINTF(("start+amask would wrap around\n"));
goto out;
}
@@ -487,8 +487,8 @@ rman_reserve_resource_bound(struct rman *rm, u_long start, u_long end,
s->r_start, end));
break;
}
- if (s->r_start + amask < s->r_start) {
- DPRINTF(("s->r_start (%#lx) + amask (%#lx) wrapped\n",
+ if (s->r_start > ULONG_MAX - amask) {
+ DPRINTF(("s->r_start (%#lx) + amask (%#lx) too large\n",
s->r_start, amask));
break;
}