aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGordon Tetlow <gordon@FreeBSD.org>2021-08-24 18:02:42 +0000
committerGordon Tetlow <gordon@FreeBSD.org>2021-08-24 18:02:42 +0000
commitfab38dac650664eb614ab28ff2535d97bec21e89 (patch)
tree5627d3f79433683b931b291582354478b89a85b5
parent8fe0dbe59a7fdf65997de99f60fc4f385408b14a (diff)
downloadsrc-fab38dac650664eb614ab28ff2535d97bec21e89.tar.gz
src-fab38dac650664eb614ab28ff2535d97bec21e89.zip
Fix libfetch out of bounds read.
Approved by: so Security: SA-21:15.libfetch Security: CVE-2021-36159
-rw-r--r--lib/libfetch/ftp.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/libfetch/ftp.c b/lib/libfetch/ftp.c
index c034b5efa240..1755012fc99b 100644
--- a/lib/libfetch/ftp.c
+++ b/lib/libfetch/ftp.c
@@ -702,8 +702,11 @@ ftp_transfer(conn_t *conn, const char *oper, const char *file,
goto ouch;
}
l = (e == FTP_PASSIVE_MODE ? 6 : 21);
- for (i = 0; *p && i < l; i++, p++)
+ for (i = 0; *p && i < l; i++, p++) {
addr[i] = strtol(p, &p, 10);
+ if (*p == '\0' && i < l - 1)
+ break;
+ }
if (i < l) {
e = FTP_PROTOCOL_ERROR;
goto ouch;