aboutsummaryrefslogtreecommitdiff
path: root/networking/udhcp/dhcpc.c
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2010-03-27 23:23:41 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2010-03-27 23:23:41 +0100
commit9107b63a7fb80fcab0da71cf12e8c81dfc394d20 (patch)
tree566be6323a69a09949110349e720e33d7dd66fb2 /networking/udhcp/dhcpc.c
parentc2fdd41f5f97349f23b2a66592b9b29834faabaf (diff)
downloadbusybox-w32-9107b63a7fb80fcab0da71cf12e8c81dfc394d20.tar.gz
busybox-w32-9107b63a7fb80fcab0da71cf12e8c81dfc394d20.tar.bz2
busybox-w32-9107b63a7fb80fcab0da71cf12e8c81dfc394d20.zip
udhcp: abort if we see unknown option, and show valid options if so
function old new delta udhcp_option_idx - 77 +77 udhcp_str2optset 366 351 -15 udhcpc_main 2845 2801 -44 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 0/2 up/down: 77/-59) Total: 18 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'networking/udhcp/dhcpc.c')
-rw-r--r--networking/udhcp/dhcpc.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/networking/udhcp/dhcpc.c b/networking/udhcp/dhcpc.c
index 478ca5c21..c36d4180b 100644
--- a/networking/udhcp/dhcpc.c
+++ b/networking/udhcp/dhcpc.c
@@ -879,21 +879,17 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv)
879 client_config.no_default_options = 1; 879 client_config.no_default_options = 1;
880 while (list_O) { 880 while (list_O) {
881 char *optstr = llist_pop(&list_O); 881 char *optstr = llist_pop(&list_O);
882 int n = index_in_strings(dhcp_option_strings, optstr); 882 unsigned n = udhcp_option_idx(optstr);
883 if (n < 0)
884 bb_error_msg_and_die("unknown option '%s'", optstr);
885 n = dhcp_options[n].code; 883 n = dhcp_options[n].code;
886 client_config.opt_mask[n >> 3] |= 1 << (n & 7); 884 client_config.opt_mask[n >> 3] |= 1 << (n & 7);
887 } 885 }
888 while (list_x) { 886 while (list_x) {
889 int n; 887 unsigned n;
890 char *optstr = llist_pop(&list_x); 888 char *optstr = llist_pop(&list_x);
891 char *colon = strchr(optstr, ':'); 889 char *colon = strchr(optstr, ':');
892 if (colon) 890 if (colon)
893 *colon = '\0'; 891 *colon = '\0';
894 n = index_in_strings(dhcp_option_strings, optstr); 892 n = udhcp_option_idx(optstr);
895 if (n < 0)
896 bb_error_msg_and_die("unknown option '%s'", optstr);
897 if (colon) 893 if (colon)
898 *colon = ' '; 894 *colon = ' ';
899 udhcp_str2optset(optstr, &client_config.options); 895 udhcp_str2optset(optstr, &client_config.options);