X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fnetconsole.c;h=ce5a15ef57cea6ae378ef2dbd0ca3fbd2122a326;hb=3a543a8084aabae5b31b9858525cbe507d2c67fb;hp=350004757715011de9de0bb5b9176e36059dea1a;hpb=ade766acfb27b1cfe175cd83f22db80dc5b5d789;p=oweals%2Fu-boot.git diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c index 3500047577..ce5a15ef57 100644 --- a/drivers/net/netconsole.c +++ b/drivers/net/netconsole.c @@ -1,8 +1,7 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * (C) Copyright 2004 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. - * - * SPDX-License-Identifier: GPL-2.0+ */ #include @@ -10,8 +9,6 @@ #include #include -DECLARE_GLOBAL_DATA_PTR; - #ifndef CONFIG_NETCONSOLE_BUFFER_SIZE #define CONFIG_NETCONSOLE_BUFFER_SIZE 512 #endif @@ -62,8 +59,8 @@ static int is_broadcast(struct in_addr ip) /* update only when the environment has changed */ if (env_changed_id != env_id) { - netmask = getenv_ip("netmask"); - our_ip = getenv_ip("ipaddr"); + netmask = env_get_ip("netmask"); + our_ip = env_get_ip("ipaddr"); env_changed_id = env_id; } @@ -82,11 +79,11 @@ static int refresh_settings_from_env(void) /* update only when the environment has changed */ if (env_changed_id != env_id) { - if (getenv("ncip")) { - nc_ip = getenv_ip("ncip"); + if (env_get("ncip")) { + nc_ip = env_get_ip("ncip"); if (!nc_ip.s_addr) return -1; /* ncip is 0.0.0.0 */ - p = strchr(getenv("ncip"), ':'); + p = strchr(env_get("ncip"), ':'); if (p != NULL) { nc_out_port = simple_strtoul(p + 1, NULL, 10); nc_in_port = nc_out_port; @@ -95,10 +92,10 @@ static int refresh_settings_from_env(void) nc_ip.s_addr = ~0; /* ncip is not set, so broadcast */ } - p = getenv("ncoutport"); + p = env_get("ncoutport"); if (p != NULL) nc_out_port = simple_strtoul(p, NULL, 10); - p = getenv("ncinport"); + p = env_get("ncinport"); if (p != NULL) nc_in_port = simple_strtoul(p, NULL, 10); @@ -153,14 +150,17 @@ int nc_input_packet(uchar *pkt, struct in_addr src_ip, unsigned dest_port, len = sizeof(input_buffer) - input_size; end = input_offset + input_size; - if (end > sizeof(input_buffer)) + if (end >= sizeof(input_buffer)) end -= sizeof(input_buffer); chunk = len; - if (end + len > sizeof(input_buffer)) { + /* Check if packet will wrap in input_buffer */ + if (end + len >= sizeof(input_buffer)) { chunk = sizeof(input_buffer) - end; + /* Copy the second part of the pkt to start of input_buffer */ memcpy(input_buffer, pkt + chunk, len - chunk); } + /* Copy first (or only) part of pkt after end of current valid input*/ memcpy(input_buffer + end, pkt, chunk); input_size += len;