Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/GStreamer/gstreamer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim-Philipp Müller <tim@centricular.com>2021-08-10 15:35:14 +0300
committerTim-Philipp Müller <tim@centricular.com>2021-08-10 16:10:22 +0300
commitbb48c4c9f6012f86f777f1814b0cfebbb7f9c704 (patch)
tree8b49e53dbbefafae09f73ef4ed6b7deab54b6d48
parent77ffed293fe8c5e41dd0354558615fa0d23c5a75 (diff)
plugin: load plugins with unknown license strings
We shouldn't fail to load plugins just because we don't recognise the license string. It's not our job to validate licenses, and the license list is outdated and ambiguous anyway. Also add MPL-2.0 to the list, and fix some defunct license URLs in the code comments. Get rid of the hard-coded skip index, doesn't really buy us much versus just skipping with a few strlens, and is harder to maintain. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/864>
-rw-r--r--gst/gstplugin.c35
1 files changed, 16 insertions, 19 deletions
diff --git a/gst/gstplugin.c b/gst/gstplugin.c
index 3998f049df..da2221f534 100644
--- a/gst/gstplugin.c
+++ b/gst/gstplugin.c
@@ -86,33 +86,29 @@ static gchar **_plugin_loading_whitelist; /* NULL */
/* static variables for segfault handling of plugin loading */
static char *_gst_plugin_fault_handler_filename = NULL;
-/* list of valid licenses.
- * One of these must be specified or the plugin won't be loaded
- * Please file a bug to request any additional license be added.
- *
- * GPL: http://www.gnu.org/copyleft/gpl.html
- * LGPL: http://www.gnu.org/copyleft/lesser.html
- * QPL: http://www.trolltech.com/licenses/qpl.html
- * MPL: http://www.opensource.org/licenses/mozilla1.1.php
- * MIT/X11: http://www.opensource.org/licenses/mit-license.php
+/* List of known licenses:
+ * GPL: https://opensource.org/licenses/gpl-license
+ * LGPL: https://opensource.org/licenses/lgpl-license
+ * QPL: https://opensource.org/licenses/QPL-1.0
+ * MPL: https://opensource.org/licenses/MPL-1.1
+ * MPL-2.0: https://opensource.org/licenses/MPL-2.0
+ * MIT/X11: https://opensource.org/licenses/MIT
* 3-clause BSD: https://opensource.org/licenses/BSD-3-Clause
* Zero-Clause BSD: https://opensource.org/licenses/0BSD
+ * FIXME: update to use SPDX identifiers, or just remove entirely
*/
-static const gchar valid_licenses[] = "LGPL\000" /* GNU Lesser General Public License */
+static const gchar known_licenses[] = "LGPL\000" /* GNU Lesser General Public License */
"GPL\000" /* GNU General Public License */
"QPL\000" /* Trolltech Qt Public License */
"GPL/QPL\000" /* Combi-license of GPL + QPL */
"MPL\000" /* MPL 1.1 license */
+ "MPL-2.0\000" /* MPL 2.0 license */
"BSD\000" /* 3-clause BSD license */
"MIT/X11\000" /* MIT/X11 license */
"0BSD\000" /* Zero-Clause BSD */
"Proprietary\000" /* Proprietary license */
GST_LICENSE_UNKNOWN; /* some other license */
-static const guint8 valid_licenses_idx[] = { 0, 5, 9, 13, 21, 25, 29, 37, 42,
- 54
-};
-
static GstPlugin *gst_plugin_register_func (GstPlugin * plugin,
const GstPluginDesc * desc, gpointer user_data);
static void gst_plugin_desc_copy (GstPluginDesc * dest,
@@ -462,12 +458,13 @@ priv_gst_plugin_loading_get_whitelist_hash (void)
static gboolean
gst_plugin_check_license (const gchar * license)
{
- gint i;
+ const gchar *l, *end = known_licenses + sizeof (known_licenses);
- for (i = 0; i < G_N_ELEMENTS (valid_licenses_idx); ++i) {
- if (strcmp (license, valid_licenses + valid_licenses_idx[i]) == 0)
+ for (l = known_licenses; l < end; l += strlen (l) + 1) {
+ if (strcmp (license, l) == 0)
return TRUE;
}
+
return FALSE;
}
@@ -505,9 +502,9 @@ gst_plugin_register_func (GstPlugin * plugin, const GstPluginDesc * desc,
if (!gst_plugin_check_license (desc->license)) {
if (GST_CAT_DEFAULT)
- GST_WARNING ("plugin \"%s\" has invalid license \"%s\", not loading",
+ GST_WARNING ("plugin \"%s\" has unknown license \"%s\"",
GST_STR_NULL (plugin->filename), desc->license);
- return NULL;
+ /* We still want to load the plugin, it's not our job to validate licenses */
}
if (GST_CAT_DEFAULT)