diff options
| -rw-r--r-- | net/ieee80211/ieee80211_module.c | 26 |
1 files changed, 6 insertions, 20 deletions
diff --git a/net/ieee80211/ieee80211_module.c b/net/ieee80211/ieee80211_module.c index 03a47343ddc7..4b43ae1235f9 100644 --- a/net/ieee80211/ieee80211_module.c +++ b/net/ieee80211/ieee80211_module.c | |||
| @@ -195,34 +195,20 @@ static int show_debug_level(char *page, char **start, off_t offset, | |||
| 195 | static int store_debug_level(struct file *file, const char __user * buffer, | 195 | static int store_debug_level(struct file *file, const char __user * buffer, |
| 196 | unsigned long count, void *data) | 196 | unsigned long count, void *data) |
| 197 | { | 197 | { |
| 198 | char buf[] = "0x00000000"; | 198 | char buf[] = "0x00000000\n"; |
| 199 | char *p = (char *)buf; | 199 | unsigned long len = min((unsigned long)sizeof(buf) - 1, count); |
| 200 | unsigned long val; | 200 | unsigned long val; |
| 201 | 201 | ||
| 202 | if (count > sizeof(buf) - 1) | 202 | if (copy_from_user(buf, buffer, len)) |
| 203 | count = sizeof(buf) - 1; | ||
| 204 | |||
| 205 | if (copy_from_user(buf, buffer, count)) | ||
| 206 | return count; | 203 | return count; |
| 207 | buf[count] = 0; | 204 | buf[len] = 0; |
| 208 | /* | 205 | if (sscanf(buf, "%li", &val) != 1) |
| 209 | * what a FPOS... What, sscanf(buf, "%i", &val) would be too | ||
| 210 | * scary? | ||
| 211 | */ | ||
| 212 | if (p[1] == 'x' || p[1] == 'X' || p[0] == 'x' || p[0] == 'X') { | ||
| 213 | p++; | ||
| 214 | if (p[0] == 'x' || p[0] == 'X') | ||
| 215 | p++; | ||
| 216 | val = simple_strtoul(p, &p, 16); | ||
| 217 | } else | ||
| 218 | val = simple_strtoul(p, &p, 10); | ||
| 219 | if (p == buf) | ||
| 220 | printk(KERN_INFO DRV_NAME | 206 | printk(KERN_INFO DRV_NAME |
| 221 | ": %s is not in hex or decimal form.\n", buf); | 207 | ": %s is not in hex or decimal form.\n", buf); |
| 222 | else | 208 | else |
| 223 | ieee80211_debug_level = val; | 209 | ieee80211_debug_level = val; |
| 224 | 210 | ||
| 225 | return strlen(buf); | 211 | return strnlen(buf, len); |
| 226 | } | 212 | } |
| 227 | 213 | ||
| 228 | static int __init ieee80211_init(void) | 214 | static int __init ieee80211_init(void) |
