1234567891011121314151617181920212223242526272829303132 |
- 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);
- }
|