[PATCH] lwip: wget: process legacy url with strncpy

Commit 356011f ("lwip: fix code style issues") changed two strncpy calls to strlcpy calls in the function net/lwip/wget.c:parse_legacy_args, but this breaks the correct parsing of a legacy url. strlcpy expects the size of the destination buffer, not of the amount of bytes to be copied, and it will stop when the buffer ends or when a null is found, but here we want to copy a specific amount of bytes and there is no null at the end of that specific amount of bytes. The change is reverted here. Optionally, all the calls to strlcpy(,,n) could be changed to strlcpy(,,n+1). Fixes: 356011f ("lwip: fix code style issues")
Signed-off-by: Adriano Cordova adrianox@gmail.com --- net/lwip/wget.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/net/lwip/wget.c b/net/lwip/wget.c index 83ae8a6d15..af48d741a4 100644 --- a/net/lwip/wget.c +++ b/net/lwip/wget.c @@ -180,7 +180,7 @@ static int parse_legacy_arg(char *arg, char *nurl, size_t rem)
if (rem < n) return -1; - strlcpy(p, server, n); + strncpy(p, server, n); p += n; rem -= n; if (rem < 1) @@ -191,7 +191,7 @@ static int parse_legacy_arg(char *arg, char *nurl, size_t rem) n = strlen(path); if (rem < n) return -1; - strlcpy(p, path, n); + strncpy(p, path, n); p += n; rem -= n; if (rem < 1)

On 11/28/24 15:36, Adriano Cordova wrote:
Commit 356011f ("lwip: fix code style issues") changed two strncpy calls to strlcpy calls in the function net/lwip/wget.c:parse_legacy_args, but this breaks the correct parsing of a legacy url. strlcpy expects the size of the destination buffer, not of the amount of bytes to be copied, and it will stop when the buffer ends or when a null is found, but here we want to copy a specific amount of bytes and there is no null at the end of that specific amount of bytes. The change is reverted here. Optionally, all the calls to strlcpy(,,n) could be changed to strlcpy(,,n+1). Fixes: 356011f ("lwip: fix code style issues")
Signed-off-by: Adriano Cordova adrianox@gmail.com
net/lwip/wget.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/net/lwip/wget.c b/net/lwip/wget.c index 83ae8a6d15..af48d741a4 100644 --- a/net/lwip/wget.c +++ b/net/lwip/wget.c @@ -180,7 +180,7 @@ static int parse_legacy_arg(char *arg, char *nurl, size_t rem)
if (rem < n) return -1;
- strlcpy(p, server, n);
- strncpy(p, server, n); p += n; rem -= n; if (rem < 1)
@@ -191,7 +191,7 @@ static int parse_legacy_arg(char *arg, char *nurl, size_t rem) n = strlen(path); if (rem < n) return -1;
- strlcpy(p, path, n);
- strncpy(p, path, n); p += n; rem -= n; if (rem < 1)
I already sent the same fix as [1].
[1] https://lists.denx.de/pipermail/u-boot/2024-November/573054.html
Thanks,

Ah ok, thanks for pointing it out. I think it is not in the next branch.
Il gio 28 nov 2024, 11:56 Jerome Forissier jerome.forissier@linaro.org ha scritto:
On 11/28/24 15:36, Adriano Cordova wrote:
Commit 356011f ("lwip: fix code style issues") changed two strncpy
calls to
strlcpy calls in the function net/lwip/wget.c:parse_legacy_args, but
this
breaks the correct parsing of a legacy url. strlcpy expects the size
of the
destination buffer, not of the amount of bytes to be copied, and it
will stop
when the buffer ends or when a null is found, but here we want to
copy a
specific amount of bytes and there is no null at the end of that
specific
amount of bytes. The change is reverted here. Optionally, all the
calls to
strlcpy(,,n) could be changed to strlcpy(,,n+1). Fixes: 356011f ("lwip: fix code style issues")
Signed-off-by: Adriano Cordova adrianox@gmail.com
net/lwip/wget.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/net/lwip/wget.c b/net/lwip/wget.c index 83ae8a6d15..af48d741a4 100644 --- a/net/lwip/wget.c +++ b/net/lwip/wget.c @@ -180,7 +180,7 @@ static int parse_legacy_arg(char *arg, char *nurl,
size_t rem)
if (rem < n) return -1;
strlcpy(p, server, n);
strncpy(p, server, n); p += n; rem -= n; if (rem < 1)
@@ -191,7 +191,7 @@ static int parse_legacy_arg(char *arg, char *nurl,
size_t rem)
n = strlen(path); if (rem < n) return -1;
strlcpy(p, path, n);
strncpy(p, path, n); p += n; rem -= n; if (rem < 1)
I already sent the same fix as [1].
[1] https://lists.denx.de/pipermail/u-boot/2024-November/573054.html
Thanks,
-- Jerome
participants (3)
-
Adriano Cordova
-
Adriano Córdova
-
Jerome Forissier