summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSven Neumann <s.neumann@raumfeld.com>2011-07-31 22:18:39 +0200
committerPeter Korsgaard <jacmet@sunsite.dk>2011-08-04 21:22:19 +0200
commite9394d8ca2a52cac02e7e63bebaf4a71df8bdf2d (patch)
tree35c2be69b1181849a99d7bbf4332f261eec94454
parentd49286740aaeacb413dd0aa8822ff06d164ebb27 (diff)
downloadbuildroot-novena-e9394d8ca2a52cac02e7e63bebaf4a71df8bdf2d.tar.gz
buildroot-novena-e9394d8ca2a52cac02e7e63bebaf4a71df8bdf2d.zip
libsoup: add patch to fix CVE-2011-2054
Fixes a security hole that caused some SoupServer users to unintentionally allow accessing the entire local filesystem when they thought they were only providing access to a single directory. This is the change from libsoup-2.34.3 backported to 2.32.2. It doesn't include the changes to the test suite though. Signed-off-by: Sven Neumann <s.neumann@raumfeld.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
-rw-r--r--package/libsoup/libsoup-CVE-2011-2054.patch32
1 files changed, 32 insertions, 0 deletions
diff --git a/package/libsoup/libsoup-CVE-2011-2054.patch b/package/libsoup/libsoup-CVE-2011-2054.patch
new file mode 100644
index 000000000..0dc5eccf9
--- /dev/null
+++ b/package/libsoup/libsoup-CVE-2011-2054.patch
@@ -0,0 +1,32 @@
+From 4617b6ef6dd21931a0153070c5b5ff7ef21b46f8 Mon Sep 17 00:00:00 2001
+From: Dan Winship <danw@gnome.org>
+Date: Wed, 29 Jun 2011 10:04:06 -0400
+Subject: [PATCH] SoupServer: fix to not allow smuggling ".." into path
+
+When SoupServer:raw-paths was set (the default), it was possible to
+sneak ".." segments into the path passed to the SoupServerHandler,
+which could then end up tricking some handlers into retrieving
+arbitrary files from the filesystem. Fix that.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=653258
+
+diff --git a/libsoup/soup-server.c b/libsoup/soup-server.c
+index d56efd1..7225337 100644
+--- a/libsoup/soup-server.c
++++ b/libsoup/soup-server.c
+@@ -779,6 +779,15 @@ got_headers (SoupMessage *req, SoupClientContext *client)
+
+ uri = soup_message_get_uri (req);
+ decoded_path = soup_uri_decode (uri->path);
++
++ if (strstr (decoded_path, "/../") ||
++ g_str_has_suffix (decoded_path, "/..")) {
++ /* Introducing new ".." segments is not allowed */
++ g_free (decoded_path);
++ soup_message_set_status (req, SOUP_STATUS_BAD_REQUEST);
++ return;
++ }
++
+ soup_uri_set_path (uri, decoded_path);
+ g_free (decoded_path);
+ }