Skip to content

Commit

Permalink
rfkill: use strict_strtoul (v2)
Browse files Browse the repository at this point in the history
Switch sysfs parsing to something that actually works properly.

Signed-off-by: Henrique de Moraes Holschuh <[email protected]>
Acked-by: Ivo van Doorn <[email protected]>
Signed-off-by: John W. Linville <[email protected]>
  • Loading branch information
hmh authored and linvjw committed Aug 29, 2008
1 parent 5701ed8 commit 849e057
Showing 1 changed file with 12 additions and 2 deletions.
14 changes: 12 additions & 2 deletions net/rfkill/rfkill.c
Original file line number Diff line number Diff line change
Expand Up @@ -402,12 +402,16 @@ static ssize_t rfkill_state_store(struct device *dev,
const char *buf, size_t count)
{
struct rfkill *rfkill = to_rfkill(dev);
unsigned int state = simple_strtoul(buf, NULL, 0);
unsigned long state;
int error;

if (!capable(CAP_NET_ADMIN))
return -EPERM;

error = strict_strtoul(buf, 0, &state);
if (error)
return error;

/* RFKILL_STATE_HARD_BLOCKED is illegal here... */
if (state != RFKILL_STATE_UNBLOCKED &&
state != RFKILL_STATE_SOFT_BLOCKED)
Expand Down Expand Up @@ -435,7 +439,8 @@ static ssize_t rfkill_claim_store(struct device *dev,
const char *buf, size_t count)
{
struct rfkill *rfkill = to_rfkill(dev);
bool claim = !!simple_strtoul(buf, NULL, 0);
unsigned long claim_tmp;
bool claim;
int error;

if (!capable(CAP_NET_ADMIN))
Expand All @@ -444,6 +449,11 @@ static ssize_t rfkill_claim_store(struct device *dev,
if (rfkill->user_claim_unsupported)
return -EOPNOTSUPP;

error = strict_strtoul(buf, 0, &claim_tmp);
if (error)
return error;
claim = !!claim_tmp;

/*
* Take the global lock to make sure the kernel is not in
* the middle of rfkill_switch_all
Expand Down

0 comments on commit 849e057

Please sign in to comment.