| Differences between
and this patch
- a/Source/WebKit2/ChangeLog +19 lines
Lines 1-3 a/Source/WebKit2/ChangeLog_sec1
1
2015-07-14  Michael Catanzaro  <mcatanzaro@igalia.com>
2
3
        [Linux] SeccompFilters: whitelist all NPAPI plugin directories
4
        https://bugs.webkit.org/show_bug.cgi?id=140067
5
6
        Reviewed by Žan Doberšek.
7
8
        * PlatformEfl.cmake: Build PluginSearchPath.cpp
9
        * PlatformGTK.cmake: Build PluginSearchPath.cpp
10
        * Shared/Plugins/unix/PluginSearchPath.cpp: Added.
11
        (WebKit::pluginsDirectories): Moved from PluginInfoStoreUnix.cpp.
12
        * Shared/Plugins/unix/PluginSearchPath.h: Added.
13
        * Shared/linux/SeccompFilters/SyscallPolicy.cpp:
14
        (WebKit::SyscallPolicy::addDefaultWebProcessPolicy): Add the entire
15
        plugin search path to the whitelist.
16
        * UIProcess/Plugins/unix/PluginInfoStoreUnix.cpp:
17
        (WebKit::PluginInfoStore::pluginsDirectories): Now gets plugins
18
        directories from PluginSearchPath.cpp
19
1
2015-07-14  Yongjun Zhang  <yongjun_zhang@apple.com>
20
2015-07-14  Yongjun Zhang  <yongjun_zhang@apple.com>
2
21
3
        https://bugs.webkit.org/show_bug.cgi?id=146917
22
        https://bugs.webkit.org/show_bug.cgi?id=146917
- a/Source/WebKit2/PlatformEfl.cmake +3 lines
Lines 34-39 list(APPEND WebKit2_SOURCES a/Source/WebKit2/PlatformEfl.cmake_sec1
34
34
35
    Shared/Plugins/Netscape/x11/NetscapePluginModuleX11.cpp
35
    Shared/Plugins/Netscape/x11/NetscapePluginModuleX11.cpp
36
36
37
    Shared/Plugins/unix/PluginSearchPath.cpp
38
37
    Shared/cairo/ShareableBitmapCairo.cpp
39
    Shared/cairo/ShareableBitmapCairo.cpp
38
40
39
    Shared/efl/NativeContextMenuItemEfl.cpp
41
    Shared/efl/NativeContextMenuItemEfl.cpp
Lines 235-240 list(APPEND WebKit2_INCLUDE_DIRECTORIES a/Source/WebKit2/PlatformEfl.cmake_sec2
235
    "${WEBKIT2_DIR}/Shared/CoordinatedGraphics"
237
    "${WEBKIT2_DIR}/Shared/CoordinatedGraphics"
236
    "${WEBKIT2_DIR}/Shared/Downloads/soup"
238
    "${WEBKIT2_DIR}/Shared/Downloads/soup"
237
    "${WEBKIT2_DIR}/Shared/Network/CustomProtocols/soup"
239
    "${WEBKIT2_DIR}/Shared/Network/CustomProtocols/soup"
240
    "${WEBKIT2_DIR}/Shared/Plugins/unix"
238
    "${WEBKIT2_DIR}/Shared/efl"
241
    "${WEBKIT2_DIR}/Shared/efl"
239
    "${WEBKIT2_DIR}/Shared/soup"
242
    "${WEBKIT2_DIR}/Shared/soup"
240
    "${WEBKIT2_DIR}/Shared/unix"
243
    "${WEBKIT2_DIR}/Shared/unix"
- a/Source/WebKit2/PlatformGTK.cmake +3 lines
Lines 55-60 list(APPEND WebKit2_SOURCES a/Source/WebKit2/PlatformGTK.cmake_sec1
55
55
56
    Shared/Plugins/Netscape/x11/NetscapePluginModuleX11.cpp
56
    Shared/Plugins/Netscape/x11/NetscapePluginModuleX11.cpp
57
57
58
    Shared/Plugins/unix/PluginSearchPath.cpp
59
58
    Shared/cairo/ShareableBitmapCairo.cpp
60
    Shared/cairo/ShareableBitmapCairo.cpp
59
61
60
    Shared/gtk/ArgumentCodersGtk.cpp
62
    Shared/gtk/ArgumentCodersGtk.cpp
Lines 470-475 list(APPEND WebKit2_INCLUDE_DIRECTORIES a/Source/WebKit2/PlatformGTK.cmake_sec2
470
    "${WEBKIT2_DIR}/Shared/API/c/gtk"
472
    "${WEBKIT2_DIR}/Shared/API/c/gtk"
471
    "${WEBKIT2_DIR}/Shared/Network/CustomProtocols/soup"
473
    "${WEBKIT2_DIR}/Shared/Network/CustomProtocols/soup"
472
    "${WEBKIT2_DIR}/Shared/Downloads/soup"
474
    "${WEBKIT2_DIR}/Shared/Downloads/soup"
475
    "${WEBKIT2_DIR}/Shared/Plugins/unix"
473
    "${WEBKIT2_DIR}/Shared/gtk"
476
    "${WEBKIT2_DIR}/Shared/gtk"
474
    "${WEBKIT2_DIR}/Shared/soup"
477
    "${WEBKIT2_DIR}/Shared/soup"
475
    "${WEBKIT2_DIR}/Shared/unix"
478
    "${WEBKIT2_DIR}/Shared/unix"
- a/Source/WebKit2/Shared/Plugins/unix/PluginSearchPath.cpp +76 lines
Line 0 a/Source/WebKit2/Shared/Plugins/unix/PluginSearchPath.cpp_sec1
1
/*
2
 * Copyright (C) 2015 Igalia S.L.
3
 *
4
 * Redistribution and use in source and binary forms, with or without
5
 * modification, are permitted provided that the following conditions
6
 * are met:
7
 * 1. Redistributions of source code must retain the above copyright
8
 *    notice, this list of conditions and the following disclaimer.
9
 * 2. Redistributions in binary form must reproduce the above copyright
10
 *    notice, this list of conditions and the following disclaimer in the
11
 *    documentation and/or other materials provided with the distribution.
12
 *
13
 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23
 * THE POSSIBILITY OF SUCH DAMAGE.
24
 */
25
26
#include "config.h"
27
#include "PluginSearchPath.h"
28
29
#include <WebCore/FileSystem.h>
30
31
using namespace WebCore;
32
33
namespace WebKit {
34
35
Vector<String> pluginsDirectories()
36
{
37
    Vector<String> result;
38
39
#if ENABLE(NETSCAPE_PLUGIN_API)
40
    result.append(homeDirectoryPath() + "/.mozilla/plugins");
41
    result.append(homeDirectoryPath() + "/.netscape/plugins");
42
    result.append("/usr/lib/browser/plugins");
43
    result.append("/usr/local/lib/mozilla/plugins");
44
    result.append("/usr/lib/firefox/plugins");
45
    result.append("/usr/lib64/browser-plugins");
46
    result.append("/usr/lib/browser-plugins");
47
    result.append("/usr/lib/mozilla/plugins");
48
    result.append("/usr/local/netscape/plugins");
49
    result.append("/opt/mozilla/plugins");
50
    result.append("/opt/mozilla/lib/plugins");
51
    result.append("/opt/netscape/plugins");
52
    result.append("/opt/netscape/communicator/plugins");
53
    result.append("/usr/lib/netscape/plugins");
54
    result.append("/usr/lib/netscape/plugins-libc5");
55
    result.append("/usr/lib/netscape/plugins-libc6");
56
    result.append("/usr/lib64/netscape/plugins");
57
    result.append("/usr/lib64/mozilla/plugins");
58
    result.append("/usr/lib/nsbrowser/plugins");
59
    result.append("/usr/lib64/nsbrowser/plugins");
60
61
    String mozillaHome(getenv("MOZILLA_HOME"));
62
    if (!mozillaHome.isEmpty())
63
        result.append(mozillaHome + "/plugins");
64
65
    String mozillaPaths(getenv("MOZ_PLUGIN_PATH"));
66
    if (!mozillaPaths.isEmpty()) {
67
        Vector<String> paths;
68
        mozillaPaths.split(UChar(':'), /* allowEmptyEntries */ false, paths);
69
        result.appendVector(paths);
70
    }
71
#endif
72
73
    return result;
74
}
75
76
} // namespace WebKit
- a/Source/WebKit2/Shared/Plugins/unix/PluginSearchPath.h +38 lines
Line 0 a/Source/WebKit2/Shared/Plugins/unix/PluginSearchPath.h_sec1
1
/*
2
 * Copyright (C) 2015 Igalia S.L.
3
 *
4
 * Redistribution and use in source and binary forms, with or without
5
 * modification, are permitted provided that the following conditions
6
 * are met:
7
 * 1. Redistributions of source code must retain the above copyright
8
 *    notice, this list of conditions and the following disclaimer.
9
 * 2. Redistributions in binary form must reproduce the above copyright
10
 *    notice, this list of conditions and the following disclaimer in the
11
 *    documentation and/or other materials provided with the distribution.
12
 *
13
 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23
 * THE POSSIBILITY OF SUCH DAMAGE.
24
 */
25
26
#ifndef PluginSearchPath_h
27
#define PluginSearchPath_h
28
29
#include <wtf/Forward.h>
30
#include <wtf/Vector.h>
31
32
namespace WebKit {
33
34
Vector<String> pluginsDirectories();
35
36
} // namespace WebKit
37
38
#endif // PluginSandboxProfile_h
- a/Source/WebKit2/Shared/linux/SeccompFilters/SyscallPolicy.cpp +5 lines
Lines 28-33 a/Source/WebKit2/Shared/linux/SeccompFilters/SyscallPolicy.cpp_sec1
28
28
29
#if ENABLE(SECCOMP_FILTERS)
29
#if ENABLE(SECCOMP_FILTERS)
30
30
31
#include "PluginSearchPath.h"
31
#include "WebProcessCreationParameters.h"
32
#include "WebProcessCreationParameters.h"
32
#include <libgen.h>
33
#include <libgen.h>
33
#include <string.h>
34
#include <string.h>
Lines 146-151 void SyscallPolicy::addDefaultWebProcessPolicy(const WebProcessCreationParameter a/Source/WebKit2/Shared/linux/SeccompFilters/SyscallPolicy.cpp_sec2
146
    addDirectoryPermission(ASCIILiteral(DATADIR), Read);
147
    addDirectoryPermission(ASCIILiteral(DATADIR), Read);
147
    addDirectoryPermission(ASCIILiteral(LIBDIR), Read);
148
    addDirectoryPermission(ASCIILiteral(LIBDIR), Read);
148
149
150
    // Plugin search path
151
    for (String& path : pluginsDirectories())
152
        addDirectoryPermission(path, Read);
153
149
    // SSL Certificates.
154
    // SSL Certificates.
150
    addDirectoryPermission(ASCIILiteral("/etc/ssl/certs"), Read);
155
    addDirectoryPermission(ASCIILiteral("/etc/ssl/certs"), Read);
151
156
- a/Source/WebKit2/UIProcess/Plugins/unix/PluginInfoStoreUnix.cpp -35 / +2 lines
Lines 32-37 a/Source/WebKit2/UIProcess/Plugins/unix/PluginInfoStoreUnix.cpp_sec1
32
#include "PluginInfoStore.h"
32
#include "PluginInfoStore.h"
33
33
34
#include "NetscapePluginModule.h"
34
#include "NetscapePluginModule.h"
35
#include "PluginSearchPath.h"
35
#include <WebCore/FileSystem.h>
36
#include <WebCore/FileSystem.h>
36
37
37
#if PLATFORM(GTK)
38
#if PLATFORM(GTK)
Lines 44-84 namespace WebKit { a/Source/WebKit2/UIProcess/Plugins/unix/PluginInfoStoreUnix.cpp_sec2
44
45
45
Vector<String> PluginInfoStore::pluginsDirectories()
46
Vector<String> PluginInfoStore::pluginsDirectories()
46
{
47
{
47
    Vector<String> result;
48
    return WebKit::pluginsDirectories();
48
49
    result.append(homeDirectoryPath() + "/.mozilla/plugins");
50
    result.append(homeDirectoryPath() + "/.netscape/plugins");
51
    result.append("/usr/lib/browser/plugins");
52
    result.append("/usr/local/lib/mozilla/plugins");
53
    result.append("/usr/lib/firefox/plugins");
54
    result.append("/usr/lib64/browser-plugins");
55
    result.append("/usr/lib/browser-plugins");
56
    result.append("/usr/lib/mozilla/plugins");
57
    result.append("/usr/local/netscape/plugins");
58
    result.append("/opt/mozilla/plugins");
59
    result.append("/opt/mozilla/lib/plugins");
60
    result.append("/opt/netscape/plugins");
61
    result.append("/opt/netscape/communicator/plugins");
62
    result.append("/usr/lib/netscape/plugins");
63
    result.append("/usr/lib/netscape/plugins-libc5");
64
    result.append("/usr/lib/netscape/plugins-libc6");
65
    result.append("/usr/lib64/netscape/plugins");
66
    result.append("/usr/lib64/mozilla/plugins");
67
    result.append("/usr/lib/nsbrowser/plugins");
68
    result.append("/usr/lib64/nsbrowser/plugins");
69
70
    String mozillaHome(getenv("MOZILLA_HOME"));
71
    if (!mozillaHome.isEmpty())
72
        result.append(mozillaHome + "/plugins");
73
74
    String mozillaPaths(getenv("MOZ_PLUGIN_PATH"));
75
    if (!mozillaPaths.isEmpty()) {
76
        Vector<String> paths;
77
        mozillaPaths.split(UChar(':'), /* allowEmptyEntries */ false, paths);
78
        result.appendVector(paths);
79
    }
80
81
    return result;
82
}
49
}
83
50
84
Vector<String> PluginInfoStore::pluginPathsInDirectory(const String& directory)
51
Vector<String> PluginInfoStore::pluginPathsInDirectory(const String& directory)

Return to Bug 140067