summaryrefslogtreecommitdiffstats
path: root/sbin/ifconfig/ifieee80211.c
diff options
context:
space:
mode:
authorthompsa <thompsa@FreeBSD.org>2008-06-23 16:08:40 +0000
committerthompsa <thompsa@FreeBSD.org>2008-06-23 16:08:40 +0000
commit5a33ff14915b72280b936bb995c6e1d76161354a (patch)
treed514ee9b641a5d292107295049c8a2d2c3524993 /sbin/ifconfig/ifieee80211.c
parent99db2860585f55eacc4d72327c4c8af839215676 (diff)
downloadFreeBSD-src-5a33ff14915b72280b936bb995c6e1d76161354a.zip
FreeBSD-src-5a33ff14915b72280b936bb995c6e1d76161354a.tar.gz
Ensure the channel is a number and not a range, the 'channel' command can be
easily mixed up with 'chanlist' and would give unexpected results by fixing the channel on the first number in the range.
Diffstat (limited to 'sbin/ifconfig/ifieee80211.c')
-rw-r--r--sbin/ifconfig/ifieee80211.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sbin/ifconfig/ifieee80211.c b/sbin/ifconfig/ifieee80211.c
index e81b6a3..c359353 100644
--- a/sbin/ifconfig/ifieee80211.c
+++ b/sbin/ifconfig/ifieee80211.c
@@ -666,9 +666,12 @@ set80211channel(const char *val, int d, int s, const struct afswtch *rafp)
memset(&chan, 0, sizeof(chan));
if (!isanyarg(val)) {
int v, flags;
+ char *ep;
getchaninfo(s);
- v = atoi(val);
+ v = strtol(val, &ep, 10);
+ if (val[0] == '\0' || ep[0] != '\0' || errno == ERANGE)
+ errx(1, "invalid channel number");
flags = getchannelflags(val, v);
if (v > 255) { /* treat as frequency */
mapfreq(&chan, v, flags);
OpenPOWER on IntegriCloud