summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--usr.sbin/memconfig/memconfig.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/usr.sbin/memconfig/memconfig.c b/usr.sbin/memconfig/memconfig.c
index 12b6ebdea3e..f684b6d9e7f 100644
--- a/usr.sbin/memconfig/memconfig.c
+++ b/usr.sbin/memconfig/memconfig.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: memconfig.c,v 1.12 2007/09/02 15:19:39 deraadt Exp $ */
+/* $OpenBSD: memconfig.c,v 1.13 2010/04/20 16:10:27 marco Exp $ */
/*-
* Copyright (c) 1999 Michael Smith <msmith@freebsd.org>
@@ -254,7 +254,7 @@ clearfunc(int memfd, int argc, char *argv[])
{
struct mem_range_desc mrd, *mrdp;
struct mem_range_op mro;
- int i, nd, ch;
+ int i, nd, ch, got_base = 0;
char *ep, *owner;
mrd.mr_base = 0;
@@ -266,6 +266,8 @@ clearfunc(int memfd, int argc, char *argv[])
mrd.mr_base = strtouq(optarg, &ep, 0);
if ((ep == optarg) || (*ep != 0))
help("clear");
+ else
+ got_base = 1;
break;
case 'l':
mrd.mr_len = strtouq(optarg, &ep, 0);
@@ -285,7 +287,7 @@ clearfunc(int memfd, int argc, char *argv[])
if (owner != NULL) {
/* clear-by-owner */
- if ((mrd.mr_base != 0) || (mrd.mr_len != 0))
+ if (got_base || mrd.mr_len != 0)
help("clear");
mrdp = mrgetall(memfd, &nd);
@@ -301,7 +303,7 @@ clearfunc(int memfd, int argc, char *argv[])
owner);
}
}
- } else if ((mrd.mr_base != 0) && (mrd.mr_len != 0)) {
+ } else if (got_base && mrd.mr_len != 0) {
/* clear-by-base/len */
mro.mo_arg[0] = MEMRANGE_SET_REMOVE;
mro.mo_desc = &mrd;