diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2010-03-23 15:43:08 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2010-03-23 15:43:08 +0100 |
commit | 37a658c4c86fa5ad9fb6f76cba2fca80f4249036 (patch) | |
tree | 0cdb35ff2c8baa859eab8a0e5cc5af5108ae06a4 /networking/udhcp/files.c | |
parent | 30ebd7bd7838787bdb7de0b484e37e442ab16ac5 (diff) | |
download | busybox-w32-37a658c4c86fa5ad9fb6f76cba2fca80f4249036.tar.gz busybox-w32-37a658c4c86fa5ad9fb6f76cba2fca80f4249036.tar.bz2 busybox-w32-37a658c4c86fa5ad9fb6f76cba2fca80f4249036.zip |
udhcp: handle errors in read_staticlease
also gets rid of ether-aton's static buffer in ether-wake:
text data bss dec hexfilename
838664 441 7572 846677 ceb55busybox_old
838650 441 7564 846655 ceb3fbusybox_unstripped
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'networking/udhcp/files.c')
-rw-r--r-- | networking/udhcp/files.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/networking/udhcp/files.c b/networking/udhcp/files.c index 968d8ed79..05a7b998a 100644 --- a/networking/udhcp/files.c +++ b/networking/udhcp/files.c | |||
@@ -34,11 +34,6 @@ static int FAST_FUNC read_nip(const char *line, void *arg) | |||
34 | return 1; | 34 | return 1; |
35 | } | 35 | } |
36 | 36 | ||
37 | static int FAST_FUNC read_mac(const char *line, void *arg) | ||
38 | { | ||
39 | return NULL == ether_aton_r(line, (struct ether_addr *)arg); | ||
40 | } | ||
41 | |||
42 | static int FAST_FUNC read_str(const char *line, void *arg) | 37 | static int FAST_FUNC read_str(const char *line, void *arg) |
43 | { | 38 | { |
44 | char **dest = arg; | 39 | char **dest = arg; |
@@ -242,6 +237,7 @@ static int FAST_FUNC read_opt(const char *const_line, void *arg) | |||
242 | if (retval) | 237 | if (retval) |
243 | attach_option(opt_list, option, opt, length); | 238 | attach_option(opt_list, option, opt, length); |
244 | } while (retval && option->flags & OPTION_LIST); | 239 | } while (retval && option->flags & OPTION_LIST); |
240 | |||
245 | return retval; | 241 | return retval; |
246 | } | 242 | } |
247 | 243 | ||
@@ -250,19 +246,21 @@ static int FAST_FUNC read_staticlease(const char *const_line, void *arg) | |||
250 | char *line; | 246 | char *line; |
251 | char *mac_string; | 247 | char *mac_string; |
252 | char *ip_string; | 248 | char *ip_string; |
253 | struct ether_addr mac_bytes; | 249 | struct ether_addr mac_bytes; /* it's "struct { uint8_t mac[6]; }" */ |
254 | uint32_t ip; | 250 | uint32_t nip; |
255 | 251 | ||
256 | /* Read mac */ | 252 | /* Read mac */ |
257 | line = (char *) const_line; | 253 | line = (char *) const_line; |
258 | mac_string = strtok_r(line, " \t", &line); | 254 | mac_string = strtok_r(line, " \t", &line); |
259 | read_mac(mac_string, &mac_bytes); | 255 | if (!mac_string || !ether_aton_r(mac_string, &mac_bytes)) |
256 | return 0; | ||
260 | 257 | ||
261 | /* Read ip */ | 258 | /* Read ip */ |
262 | ip_string = strtok_r(NULL, " \t", &line); | 259 | ip_string = strtok_r(NULL, " \t", &line); |
263 | read_nip(ip_string, &ip); | 260 | if (!ip_string || !read_nip(ip_string, &nip)) |
261 | return 0; | ||
264 | 262 | ||
265 | add_static_lease(arg, (uint8_t*) &mac_bytes, ip); | 263 | add_static_lease(arg, (uint8_t*) &mac_bytes, nip); |
266 | 264 | ||
267 | log_static_leases(arg); | 265 | log_static_leases(arg); |
268 | 266 | ||
@@ -316,7 +314,7 @@ void FAST_FUNC read_config(const char *file) | |||
316 | parser = config_open(file); | 314 | parser = config_open(file); |
317 | while (config_read(parser, token, 2, 2, "# \t", PARSE_NORMAL)) { | 315 | while (config_read(parser, token, 2, 2, "# \t", PARSE_NORMAL)) { |
318 | for (k = keywords, i = 0; i < ARRAY_SIZE(keywords); k++, i++) { | 316 | for (k = keywords, i = 0; i < ARRAY_SIZE(keywords); k++, i++) { |
319 | if (!strcasecmp(token[0], k->keyword)) { | 317 | if (strcasecmp(token[0], k->keyword) == 0) { |
320 | if (!k->handler(token[1], k->var)) { | 318 | if (!k->handler(token[1], k->var)) { |
321 | bb_error_msg("can't parse line %u in %s", | 319 | bb_error_msg("can't parse line %u in %s", |
322 | parser->lineno, file); | 320 | parser->lineno, file); |