[mediatomb] Added fix for custom JS parsing failure (#714466)
rmattes
rmattes at fedoraproject.org
Thu Jun 30 02:19:49 UTC 2011
commit a8962a49cf462c93b8403cb6de94578a97614fc9
Author: Rich Mattes <richmattes at gmail.com>
Date: Tue Jun 28 00:29:47 2011 -0400
Added fix for custom JS parsing failure (#714466)
mediatomb-0.12.1-jsparse.patch | 106 ++++++++++++++++++++++++++++++++++++++++
mediatomb.spec | 12 ++++-
2 files changed, 117 insertions(+), 1 deletions(-)
---
diff --git a/mediatomb-0.12.1-jsparse.patch b/mediatomb-0.12.1-jsparse.patch
new file mode 100644
index 0000000..59e2f83
--- /dev/null
+++ b/mediatomb-0.12.1-jsparse.patch
@@ -0,0 +1,106 @@
+diff -rup mediatomb-0.12.1/src/scripting/js_functions.cc ../mediatomb-0.12.1/src/scripting/js_functions.cc
+--- mediatomb-0.12.1/src/scripting/js_functions.cc 2011-06-28 00:16:08.217550466 -0400
++++ ../mediatomb-0.12.1/src/scripting/js_functions.cc 2011-06-28 00:13:27.403406447 -0400
+@@ -116,19 +116,49 @@ js_addCdsObject(JSContext *cx, uintN arg
+ {
+ try
+ {
+- jsval arg;
+- JSString *str;
+- String path;
+- String containerclass;
++ // Inputs from native code
++ JSObject *js_cds_obj = NULL;
++ JSString *str = NULL;
++ JSString *cont = NULL;
++
++ String path = nil;
++ String containerclass = nil;
+
+- JSObject *js_cds_obj;
++ JSObject *obj = JS_THIS_OBJECT(cx, argv);
+ JSObject *js_orig_obj = NULL;
+ Ref<CdsObject> orig_object;
+
+ Ref<StringConverter> p2i;
+ Ref<StringConverter> i2i;
++ switch (argc)
++ {
++ case 0:
++ log_debug("No input arguments given\n");
++ return JS_FALSE;
++ case 1:
++ if(!JS_ConvertArguments(cx, 1, JS_ARGV(cx, argv), "o", &js_cds_obj))
++ {
++ log_debug("Could not parse input arguments\n");
++ return JS_FALSE;
++ }
++ break;
++ case 2:
++ if(!JS_ConvertArguments(cx, 2, JS_ARGV(cx, argv), "oS", &js_cds_obj, &str))
++ {
++ log_debug("Could not parse input arguments\n");
++ return JS_FALSE;
++ }
++ break;
++ default:
++ if(!JS_ConvertArguments(cx, 3, JS_ARGV(cx, argv), "oSS", &js_cds_obj, &str, &cont))
++ {
++ log_debug("Could not parse input arguments\n");
++ return JS_FALSE;
++ }
++ break;
++ }
+
+- Script *self = (Script *)JS_GetPrivate(cx, JS_THIS_OBJECT(cx, argv));
++ Script *self = (Script *)JS_GetPrivate(cx, obj);
+
+ if (self == NULL)
+ {
+@@ -144,23 +174,14 @@ js_addCdsObject(JSContext *cx, uintN arg
+ {
+ i2i = StringConverter::i2i();
+ }
+-
+- arg = argv[0];
+- if (!JSVAL_IS_OBJECT(arg))
+- return JS_TRUE;
+- if (!JS_ValueToObject(cx, arg, &js_cds_obj))
+- return JS_TRUE;
+
+- // root it
+- argv[0] = OBJECT_TO_JSVAL(js_cds_obj);
+
+- str = JS_ValueToString(cx, argv[1]);
+ if (!str)
+ path = _("/");
+ else
+ path = JS_EncodeString(cx, str);
+
+- JSString *cont = JS_ValueToString(cx, argv[2]);
++
+ if (cont)
+ {
+ containerclass = JS_EncodeString(cx, cont);
+@@ -169,9 +190,9 @@ js_addCdsObject(JSContext *cx, uintN arg
+ }
+
+ if (self->whoami() == S_PLAYLIST)
+- js_orig_obj = self->getObjectProperty(JS_THIS_OBJECT(cx, argv), _("playlist"));
++ js_orig_obj = self->getObjectProperty(obj, _("playlist"));
+ else if (self->whoami() == S_IMPORT)
+- js_orig_obj = self->getObjectProperty(JS_THIS_OBJECT(cx, argv), _("orig"));
++ js_orig_obj = self->getObjectProperty(obj, _("orig"));
+
+ if (js_orig_obj == NULL)
+ {
+@@ -179,9 +200,6 @@ js_addCdsObject(JSContext *cx, uintN arg
+ return JS_TRUE;
+ }
+
+- // root it
+- argv[1] = OBJECT_TO_JSVAL(js_orig_obj);
+-
+ orig_object = self->jsObject2cdsObject(js_orig_obj, self->getProcessedObject());
+ if (orig_object == nil)
+ return JS_TRUE;
diff --git a/mediatomb.spec b/mediatomb.spec
index e62cf3a..552f696 100644
--- a/mediatomb.spec
+++ b/mediatomb.spec
@@ -1,16 +1,22 @@
Version: 0.12.1
Summary: UPnP AV MediaServer
Name: mediatomb
-Release: 10%{?dist}
+Release: 11%{?dist}
Summary: MediaTomb - UPnP AV Mediaserver for Linux
License: GPLv2
Group: Applications/Multimedia
URL: http://mediatomb.cc
Source: http://downloads.sourceforge.net/mediatomb/%{name}-%{version}.tar.gz
+# Adds handler for ogg audio metadata by default. Submitted upstream
Patch0: mediatomb-0.12.1.fixogg.patch
+# Fixes issue where video files > 999 minutes in length overrun the minutes buffer.
Patch1: mediatomb-0.12.1.fixbufferoverrun.patch
+# Fix build issues related to GCC 4.6 (missing definitions.) Submitted upstream
Patch2: mediatomb-0.12.1.fixbuild.patch
+# Port to js-1.8 (thanks Jan!) Not yet submitted upstream
Patch3: mediatomb-0.12.1.tonewjs.patch
+# Fixes to the js/native code to allow custom js parsing. Not yet submitted upstream
+Patch4: mediatomb-0.12.1-jsparse.patch
Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: sqlite-devel, mysql-devel, libexif-devel, id3lib-devel, file-devel, js-devel, zlib-devel, taglib-devel
BuildRequires: expat-devel, libcurl-devel
@@ -44,6 +50,7 @@ be found on http://www.upnp.org/.
%patch1 -p0
%patch2 -p0
%patch3 -p1
+%patch4 -p1
%build
# Fedora 13 on use system jsapi.h
@@ -124,6 +131,9 @@ fi
%{_initrddir}/mediatomb
%changelog
+* Tue Jun 28 2011 Rich Mattes <richmattes at gmail.com> - 0.12.1-11
+- Added fix for custom JS parsing failure (#714466)
+
* Tue Apr 19 2011 Jan Horak <jhorak at redhat.com> - 0.12.1-10
- Added Spidermonkey 1.8 patch
More information about the scm-commits
mailing list