diff options
author | Wenzong Fan <wenzong.fan@windriver.com> | 2017-09-03 20:31:10 -0700 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-09-05 15:01:01 +0100 |
commit | 482b7e974ad7ea5313f8a2977651ec077490d0ea (patch) | |
tree | 7471961b89085e6dc8620124e0c1336546932bc5 /meta/recipes-support | |
parent | e5dfaf8d5ea95d939699415dad23d624d874e9d0 (diff) | |
download | poky-482b7e974ad7ea5313f8a2977651ec077490d0ea.tar.gz |
curl: fix CVE-2017-1000099, 1000100, 1000101
Backport upstream commits to fix:
- CVE-2017-1000099
https://curl.haxx.se/docs/adv_20170809C.html
https://curl.haxx.se/CVE-2017-1000099.patch
- CVE-2017-1000100
https://curl.haxx.se/docs/adv_20170809B.html
https://curl.haxx.se/CVE-2017-1000100.patch
- CVE-2017-1000101
https://curl.haxx.se/docs/adv_20170809A.html
https://curl.haxx.se/CVE-2017-1000101.patch
(From OE-Core rev: 2eb590bbeab4dbf2583a78fcbaf3723757116123)
Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-support')
-rw-r--r-- | meta/recipes-support/curl/curl/CVE-2017-1000099.patch | 41 | ||||
-rw-r--r-- | meta/recipes-support/curl/curl/CVE-2017-1000100.patch | 51 | ||||
-rw-r--r-- | meta/recipes-support/curl/curl/CVE-2017-1000101.patch | 99 | ||||
-rw-r--r-- | meta/recipes-support/curl/curl_7.54.1.bb | 3 |
4 files changed, 194 insertions, 0 deletions
diff --git a/meta/recipes-support/curl/curl/CVE-2017-1000099.patch b/meta/recipes-support/curl/curl/CVE-2017-1000099.patch new file mode 100644 index 0000000000..96ff1b064b --- /dev/null +++ b/meta/recipes-support/curl/curl/CVE-2017-1000099.patch | |||
@@ -0,0 +1,41 @@ | |||
1 | From c9332fa5e84f24da300b42b1a931ade929d3e27d Mon Sep 17 00:00:00 2001 | ||
2 | From: Even Rouault <even.rouault@spatialys.com> | ||
3 | Date: Tue, 1 Aug 2017 17:17:06 +0200 | ||
4 | Subject: [PATCH] file: output the correct buffer to the user | ||
5 | |||
6 | Regression brought by 7c312f84ea930d8 (April 2017) | ||
7 | |||
8 | CVE: CVE-2017-1000099 | ||
9 | |||
10 | Bug: https://curl.haxx.se/docs/adv_20170809C.html | ||
11 | |||
12 | Credit to OSS-Fuzz for the discovery | ||
13 | |||
14 | Upstream-Status: Backport | ||
15 | https://github.com/curl/curl/commit/c9332fa5e84f24da300b42b1a931ade929d3e27d | ||
16 | |||
17 | Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com> | ||
18 | --- | ||
19 | lib/file.c | 2 +- | ||
20 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
21 | |||
22 | diff --git a/lib/file.c b/lib/file.c | ||
23 | index bd426eac2..666cbe75b 100644 | ||
24 | --- a/lib/file.c | ||
25 | +++ b/lib/file.c | ||
26 | @@ -499,11 +499,11 @@ static CURLcode file_do(struct connectdata *conn, bool *done) | ||
27 | Curl_month[tm->tm_mon], | ||
28 | tm->tm_year + 1900, | ||
29 | tm->tm_hour, | ||
30 | tm->tm_min, | ||
31 | tm->tm_sec); | ||
32 | - result = Curl_client_write(conn, CLIENTWRITE_BOTH, buf, 0); | ||
33 | + result = Curl_client_write(conn, CLIENTWRITE_BOTH, header, 0); | ||
34 | if(!result) | ||
35 | /* set the file size to make it available post transfer */ | ||
36 | Curl_pgrsSetDownloadSize(data, expected_size); | ||
37 | return result; | ||
38 | } | ||
39 | -- | ||
40 | 2.13.3 | ||
41 | |||
diff --git a/meta/recipes-support/curl/curl/CVE-2017-1000100.patch b/meta/recipes-support/curl/curl/CVE-2017-1000100.patch new file mode 100644 index 0000000000..f74f1dd896 --- /dev/null +++ b/meta/recipes-support/curl/curl/CVE-2017-1000100.patch | |||
@@ -0,0 +1,51 @@ | |||
1 | From 358b2b131ad6c095696f20dcfa62b8305263f898 Mon Sep 17 00:00:00 2001 | ||
2 | From: Daniel Stenberg <daniel@haxx.se> | ||
3 | Date: Tue, 1 Aug 2017 17:16:46 +0200 | ||
4 | Subject: [PATCH] tftp: reject file name lengths that don't fit | ||
5 | |||
6 | ... and thereby avoid telling send() to send off more bytes than the | ||
7 | size of the buffer! | ||
8 | |||
9 | CVE: CVE-2017-1000100 | ||
10 | |||
11 | Bug: https://curl.haxx.se/docs/adv_20170809B.html | ||
12 | Reported-by: Even Rouault | ||
13 | |||
14 | Credit to OSS-Fuzz for the discovery | ||
15 | |||
16 | Upstream-Status: Backport | ||
17 | https://github.com/curl/curl/commit/358b2b131ad6c095696f20dcfa62b8305263f898 | ||
18 | |||
19 | Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com> | ||
20 | --- | ||
21 | lib/tftp.c | 7 ++++++- | ||
22 | 1 file changed, 6 insertions(+), 1 deletion(-) | ||
23 | |||
24 | diff --git a/lib/tftp.c b/lib/tftp.c | ||
25 | index 02bd842..f6f4bce 100644 | ||
26 | --- a/lib/tftp.c | ||
27 | +++ b/lib/tftp.c | ||
28 | @@ -5,7 +5,7 @@ | ||
29 | * | (__| |_| | _ <| |___ | ||
30 | * \___|\___/|_| \_\_____| | ||
31 | * | ||
32 | - * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al. | ||
33 | + * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al. | ||
34 | * | ||
35 | * This software is licensed as described in the file COPYING, which | ||
36 | * you should have received as part of this distribution. The terms | ||
37 | @@ -491,6 +491,11 @@ static CURLcode tftp_send_first(tftp_state_data_t *state, tftp_event_t event) | ||
38 | if(result) | ||
39 | return result; | ||
40 | |||
41 | + if(strlen(filename) > (state->blksize - strlen(mode) - 4)) { | ||
42 | + failf(data, "TFTP file name too long\n"); | ||
43 | + return CURLE_TFTP_ILLEGAL; /* too long file name field */ | ||
44 | + } | ||
45 | + | ||
46 | snprintf((char *)state->spacket.data+2, | ||
47 | state->blksize, | ||
48 | "%s%c%s%c", filename, '\0', mode, '\0'); | ||
49 | -- | ||
50 | 1.7.9.5 | ||
51 | |||
diff --git a/meta/recipes-support/curl/curl/CVE-2017-1000101.patch b/meta/recipes-support/curl/curl/CVE-2017-1000101.patch new file mode 100644 index 0000000000..c300fff00c --- /dev/null +++ b/meta/recipes-support/curl/curl/CVE-2017-1000101.patch | |||
@@ -0,0 +1,99 @@ | |||
1 | From 453e7a7a03a2cec749abd3878a48e728c515cca7 Mon Sep 17 00:00:00 2001 | ||
2 | From: Daniel Stenberg <daniel@haxx.se> | ||
3 | Date: Tue, 1 Aug 2017 17:16:07 +0200 | ||
4 | Subject: [PATCH] glob: do not continue parsing after a strtoul() overflow | ||
5 | range | ||
6 | |||
7 | Added test 1289 to verify. | ||
8 | |||
9 | CVE: CVE-2017-1000101 | ||
10 | |||
11 | Bug: https://curl.haxx.se/docs/adv_20170809A.html | ||
12 | Reported-by: Brian Carpenter | ||
13 | |||
14 | Upstream-Status: Backport | ||
15 | https://github.com/curl/curl/commit/453e7a7a03a2cec749abd3878a48e728c515cca7 | ||
16 | |||
17 | Rebase the tests/data/Makefile.inc changes for curl 7.54.1. | ||
18 | |||
19 | Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com> | ||
20 | --- | ||
21 | src/tool_urlglob.c | 5 ++++- | ||
22 | tests/data/Makefile.inc | 2 +- | ||
23 | tests/data/test1289 | 35 +++++++++++++++++++++++++++++++++++ | ||
24 | 3 files changed, 40 insertions(+), 2 deletions(-) | ||
25 | create mode 100644 tests/data/test1289 | ||
26 | |||
27 | diff --git a/src/tool_urlglob.c b/src/tool_urlglob.c | ||
28 | index 6b1ece0..d56dcd9 100644 | ||
29 | --- a/src/tool_urlglob.c | ||
30 | +++ b/src/tool_urlglob.c | ||
31 | @@ -273,7 +273,10 @@ static CURLcode glob_range(URLGlob *glob, char **patternp, | ||
32 | } | ||
33 | errno = 0; | ||
34 | max_n = strtoul(pattern, &endp, 10); | ||
35 | - if(errno || (*endp == ':')) { | ||
36 | + if(errno) | ||
37 | + /* overflow */ | ||
38 | + endp = NULL; | ||
39 | + else if(*endp == ':') { | ||
40 | pattern = endp+1; | ||
41 | errno = 0; | ||
42 | step_n = strtoul(pattern, &endp, 10); | ||
43 | diff --git a/tests/data/Makefile.inc b/tests/data/Makefile.inc | ||
44 | index 155320a..7adbee6 100644 | ||
45 | --- a/tests/data/Makefile.inc | ||
46 | +++ b/tests/data/Makefile.inc | ||
47 | @@ -132,7 +132,7 @@ test1252 test1253 test1254 test1255 test1256 test1257 test1258 test1259 \ | ||
48 | test1260 test1261 test1262 \ | ||
49 | \ | ||
50 | test1280 test1281 test1282 test1283 test1284 test1285 test1286 test1287 \ | ||
51 | -test1288 \ | ||
52 | +test1288 test1289 \ | ||
53 | \ | ||
54 | test1300 test1301 test1302 test1303 test1304 test1305 test1306 test1307 \ | ||
55 | test1308 test1309 test1310 test1311 test1312 test1313 test1314 test1315 \ | ||
56 | diff --git a/tests/data/test1289 b/tests/data/test1289 | ||
57 | new file mode 100644 | ||
58 | index 0000000..d679cc0 | ||
59 | --- /dev/null | ||
60 | +++ b/tests/data/test1289 | ||
61 | @@ -0,0 +1,35 @@ | ||
62 | +<testcase> | ||
63 | +<info> | ||
64 | +<keywords> | ||
65 | +HTTP | ||
66 | +HTTP GET | ||
67 | +globbing | ||
68 | +</keywords> | ||
69 | +</info> | ||
70 | + | ||
71 | +# | ||
72 | +# Server-side | ||
73 | +<reply> | ||
74 | +</reply> | ||
75 | + | ||
76 | +# Client-side | ||
77 | +<client> | ||
78 | +<server> | ||
79 | +http | ||
80 | +</server> | ||
81 | +<name> | ||
82 | +globbing with overflow and bad syntxx | ||
83 | +</name> | ||
84 | +<command> | ||
85 | +http://ur%20[0-60000000000000000000 | ||
86 | +</command> | ||
87 | +</client> | ||
88 | + | ||
89 | +# Verify data after the test has been "shot" | ||
90 | +<verify> | ||
91 | +# curl: (3) [globbing] bad range in column | ||
92 | +<errorcode> | ||
93 | +3 | ||
94 | +</errorcode> | ||
95 | +</verify> | ||
96 | +</testcase> | ||
97 | -- | ||
98 | 2.11.0 | ||
99 | |||
diff --git a/meta/recipes-support/curl/curl_7.54.1.bb b/meta/recipes-support/curl/curl_7.54.1.bb index 5c8072fc65..54f3b667c8 100644 --- a/meta/recipes-support/curl/curl_7.54.1.bb +++ b/meta/recipes-support/curl/curl_7.54.1.bb | |||
@@ -7,6 +7,9 @@ LIC_FILES_CHKSUM = "file://COPYING;beginline=8;md5=3a34942f4ae3fbf1a303160714e66 | |||
7 | 7 | ||
8 | SRC_URI = "http://curl.haxx.se/download/curl-${PV}.tar.bz2 \ | 8 | SRC_URI = "http://curl.haxx.se/download/curl-${PV}.tar.bz2 \ |
9 | file://0001-replace-krb5-config-with-pkg-config.patch \ | 9 | file://0001-replace-krb5-config-with-pkg-config.patch \ |
10 | file://CVE-2017-1000099.patch \ | ||
11 | file://CVE-2017-1000100.patch \ | ||
12 | file://CVE-2017-1000101.patch \ | ||
10 | " | 13 | " |
11 | 14 | ||
12 | # curl likes to set -g0 in CFLAGS, so we stop it | 15 | # curl likes to set -g0 in CFLAGS, so we stop it |