summaryrefslogtreecommitdiff
path: root/multimedia
diff options
context:
space:
mode:
authordrochner <drochner@pkgsrc.org>2008-01-11 16:05:27 +0000
committerdrochner <drochner@pkgsrc.org>2008-01-11 16:05:27 +0000
commit508ca350e2aca5db2de4c6b49b6872f2e31a2f6b (patch)
tree8a178af74f16b176c0eb7d1b10fdca537069a9a2 /multimedia
parent6d9324864cc163ad04af42d4b4ee98a61cb58866 (diff)
downloadpkgsrc-508ca350e2aca5db2de4c6b49b6872f2e31a2f6b.tar.gz
update to 1.1.9
changes: There are improvements to DVB subtitle support and H.264 video, and fixes for MP3 playback, DVB, ivtv, Flash video streams and some playlist types (particularly XML ones). One significant fix is that the special "be nice to the user" '#' handling has been dropped since it seems to have been causing more problems than it fixes. pkgsrc note: a fix for CVE-2008-0225 (RTSP buffer overflow) is already included
Diffstat (limited to 'multimedia')
-rw-r--r--multimedia/xine-lib/Makefile5
-rw-r--r--multimedia/xine-lib/Makefile.common5
-rw-r--r--multimedia/xine-lib/distinfo18
-rw-r--r--multimedia/xine-lib/patches/patch-ae38
-rw-r--r--multimedia/xine-lib/patches/patch-ag10
-rw-r--r--multimedia/xine-lib/patches/patch-ap8
-rw-r--r--multimedia/xine-lib/patches/patch-fa14
-rw-r--r--multimedia/xine-lib/patches/patch-ga164
-rw-r--r--multimedia/xine-lib/patches/patch-gb26
-rw-r--r--multimedia/xine-lib/patches/patch-gc24
10 files changed, 272 insertions, 40 deletions
diff --git a/multimedia/xine-lib/Makefile b/multimedia/xine-lib/Makefile
index 6dedbd12dd2..7483034252c 100644
--- a/multimedia/xine-lib/Makefile
+++ b/multimedia/xine-lib/Makefile
@@ -1,9 +1,7 @@
-# $NetBSD: Makefile,v 1.53 2008/01/06 15:36:41 drochner Exp $
+# $NetBSD: Makefile,v 1.54 2008/01/11 16:05:27 drochner Exp $
.include "Makefile.common"
-PKGREVISION= 1
-
COMMENT= Multimedia player library
BUILDLINK_API_DEPENDS.vcdimager+= vcdimager>=0.7.20nb1
@@ -43,6 +41,7 @@ CONFIGURE_ARGS+= --disable-opengl
.include "../../multimedia/libtheora/buildlink3.mk"
.include "../../sysutils/vcdimager-devel/buildlink3.mk"
.include "../../x11/libXext/buildlink3.mk"
+.include "../../x11/libXt/buildlink3.mk"
.include "../../x11/libXinerama/buildlink3.mk"
.include "../../x11/libXv/buildlink3.mk"
.include "../../x11/xextproto/buildlink3.mk"
diff --git a/multimedia/xine-lib/Makefile.common b/multimedia/xine-lib/Makefile.common
index d9470e4edb7..6ec590f54b7 100644
--- a/multimedia/xine-lib/Makefile.common
+++ b/multimedia/xine-lib/Makefile.common
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile.common,v 1.42 2007/11/22 20:20:21 drochner Exp $
+# $NetBSD: Makefile.common,v 1.43 2008/01/11 16:05:27 drochner Exp $
#
DISTNAME= xine-lib-${XINE_LIB_VER}
@@ -6,11 +6,12 @@ XINE_PKGNAME= xine-lib-${XINE_LIB_VER}
PKGNAME?= ${XINE_PKGNAME}
CATEGORIES?= multimedia
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=xine/}
+EXTRACT_SUFX= .tar.bz2
MAINTAINER= pkgsrc-users@NetBSD.org
HOMEPAGE= http://xinehq.de/
-XINE_LIB_VER= 1.1.8
+XINE_LIB_VER= 1.1.9
PLIST_SUBST+= XINE_LIB_VER=${XINE_LIB_VER:Q}
DISTINFO_FILE= ${.CURDIR}/../../multimedia/xine-lib/distinfo
diff --git a/multimedia/xine-lib/distinfo b/multimedia/xine-lib/distinfo
index e9a570e653f..8a15b42b7a5 100644
--- a/multimedia/xine-lib/distinfo
+++ b/multimedia/xine-lib/distinfo
@@ -1,20 +1,20 @@
-$NetBSD: distinfo,v 1.48 2007/11/22 20:20:21 drochner Exp $
+$NetBSD: distinfo,v 1.49 2008/01/11 16:05:27 drochner Exp $
-SHA1 (xine-lib-1.1.8.tar.gz) = 869905908a831a959ae3c6962d6d3204dc53d39b
-RMD160 (xine-lib-1.1.8.tar.gz) = b4207e0d0373b68d8d3c3fb66a467953c0024732
-Size (xine-lib-1.1.8.tar.gz) = 8872132 bytes
+SHA1 (xine-lib-1.1.9.tar.bz2) = f9e36b6cc69f76fed3b95de8a29ef2255770aa33
+RMD160 (xine-lib-1.1.9.tar.bz2) = 179dc66d13f5f1dcdf134ac82ed71b905c7332e8
+Size (xine-lib-1.1.9.tar.bz2) = 7391259 bytes
SHA1 (patch-aa) = e09d34a121080b03bc67b2d8a3ca27463b771acc
SHA1 (patch-ab) = ef13b60c2bea54f354acf1b2d70c04594dac36c9
SHA1 (patch-ad) = 94aaac03f74c72a1ca753d1320aac07d1bb8a846
-SHA1 (patch-ae) = 78060d0d1a721642776a909ab3dfef6bd4441a33
-SHA1 (patch-ag) = 8638939d400eb11fc01fd832b205366b906fc9ee
+SHA1 (patch-ae) = 417d730034cc4dbf3103e07afb8432822084c64b
+SHA1 (patch-ag) = fa2298e1214a4dbea36526aed27a6e506a069681
SHA1 (patch-ah) = ba408237d4a717cc91b5d06ede425048914a9a1f
SHA1 (patch-ai) = f0b33c1a36082445a86bcf71e07a6210aa21b7dc
SHA1 (patch-aj) = 4215c3bc37cf636e563a509f9a391081ed8e773b
SHA1 (patch-ak) = 744f59d1b9e40983f25bb532db1a5d4e92be6fbe
SHA1 (patch-al) = 9e3ad86a7d7f32e58de157fa37141138af10838e
SHA1 (patch-ao) = c4524c88bb4ce61b13e354d22aa0f7445ff0aa37
-SHA1 (patch-ap) = 756db263fc805a75a0d6be5bdb10344a6fd9c2e9
+SHA1 (patch-ap) = e4801863b0d4625fe6db9e4c51218f55b90c6100
SHA1 (patch-aq) = f6efa28ab1b9a24b79c18c181a5d309db53172e4
SHA1 (patch-as) = a0a93a256589e87a66eef31494441aa1b200f834
SHA1 (patch-av) = 40e9a44a506a0006b6761e8367c65239bd4856ee
@@ -29,3 +29,7 @@ SHA1 (patch-db) = 3ad4ca6f43a379b251211477972cd6d34b1f821a
SHA1 (patch-dc) = 11c4212029e67f22796e57706b42400a0dbcac3a
SHA1 (patch-eb) = b65e2c7c30fc04115d55da1ce1f6f65216ac1d23
SHA1 (patch-ee) = 49efc9d722f2141e88106d87414586ab80e4f5a9
+SHA1 (patch-fa) = a69fe09588596bfc3d74fad29e5a1aeeeead4dfd
+SHA1 (patch-ga) = 3f987a5660e48e86d0edab3ab15436227282eed1
+SHA1 (patch-gb) = 8d104ac33a7f8dbd47ff4f132b4360788efa29b8
+SHA1 (patch-gc) = 876e9c319d8ff01c57267c90f3f1b8c55a3fb766
diff --git a/multimedia/xine-lib/patches/patch-ae b/multimedia/xine-lib/patches/patch-ae
index 48a0fdb94d5..e9d903d4c70 100644
--- a/multimedia/xine-lib/patches/patch-ae
+++ b/multimedia/xine-lib/patches/patch-ae
@@ -1,8 +1,8 @@
-$NetBSD: patch-ae,v 1.4 2007/06/15 18:20:06 drochner Exp $
+$NetBSD: patch-ae,v 1.5 2008/01/11 16:05:27 drochner Exp $
---- src/input/input_vcd.c.orig 2007-04-05 00:18:00.000000000 +0200
+--- src/input/input_vcd.c.orig 2008-01-01 14:30:08.000000000 +0100
+++ src/input/input_vcd.c
-@@ -32,6 +32,7 @@
+@@ -29,6 +29,7 @@
#include <errno.h>
#include <fcntl.h>
#include <sys/ioctl.h>
@@ -10,70 +10,70 @@ $NetBSD: patch-ae,v 1.4 2007/06/15 18:20:06 drochner Exp $
#include <string.h>
#include <netinet/in.h>
#ifdef HAVE_LINUX_CDROM_H
-@@ -95,7 +96,7 @@ typedef struct {
+@@ -92,7 +93,7 @@ typedef struct {
#if defined (__linux__) || defined(__sun)
struct cdrom_tochdr tochdr;
struct cdrom_tocentry tocent[100];
--#elif defined (__FreeBSD__)
+-#elif defined (__FreeBSD_kernel__)
+#elif (defined(BSD) && BSD >= 199306)
struct ioc_toc_header tochdr;
struct cd_toc_entry *tocent;
off_t cur_sec;
-@@ -120,7 +121,7 @@ typedef struct {
+@@ -117,7 +118,7 @@ typedef struct {
int cur_track;
--#if defined (__linux__) || defined(__sun) || defined(__FreeBSD__)
+-#if defined (__linux__) || defined(__sun) || defined (__FreeBSD_kernel__)
+#if defined (__linux__) || defined(__sun) || (defined(BSD) && BSD >= 199306)
uint8_t cur_min, cur_sec, cur_frame;
#endif
-@@ -180,7 +181,7 @@ static int input_vcd_read_toc (vcd_input
+@@ -177,7 +178,7 @@ static int input_vcd_read_toc (vcd_input
return 0;
}
--#elif defined (__FreeBSD__)
+-#elif defined (__FreeBSD_kernel__)
+#elif (defined(BSD) && BSD >= 199306)
static int input_vcd_read_toc (vcd_input_class_t *this, int fd) {
struct ioc_read_toc_entry te;
-@@ -396,7 +397,7 @@ static off_t vcd_plugin_read (input_plug
+@@ -393,7 +394,7 @@ static off_t vcd_plugin_read (input_plug
memcpy (buf, data.data, VCDSECTORSIZE); /* FIXME */
return VCDSECTORSIZE;
}
--#elif defined (__FreeBSD__)
+-#elif defined (__FreeBSD_kernel__)
+#elif (defined(BSD) && BSD >= 199306)
static off_t vcd_plugin_read (input_plugin_t *this_gen,
char *buf, off_t nlen) {
vcd_input_plugin_t *this = (vcd_input_plugin_t *) this_gen;
-@@ -534,7 +535,7 @@ static buf_element_t *vcd_plugin_read_bl
+@@ -531,7 +532,7 @@ static buf_element_t *vcd_plugin_read_bl
memcpy (buf->mem, data.data, VCDSECTORSIZE); /* FIXME */
return buf;
}
--#elif defined (__FreeBSD__)
+-#elif defined (__FreeBSD_kernel__)
+#elif (defined(BSD) && BSD >= 199306)
static buf_element_t *vcd_plugin_read_block (input_plugin_t *this_gen,
fifo_buffer_t *fifo, off_t nlen) {
-@@ -693,7 +694,7 @@ static off_t vcd_plugin_seek (input_plug
+@@ -690,7 +691,7 @@ static off_t vcd_plugin_seek (input_plug
return offset ; /* FIXME */
}
--#elif defined (__FreeBSD__)
+-#elif defined (__FreeBSD_kernel__)
+#elif (defined(BSD) && BSD >= 199306)
static off_t vcd_plugin_seek (input_plugin_t *this_gen,
off_t offset, int origin) {
-@@ -767,7 +768,7 @@ static off_t vcd_plugin_get_length (inpu
+@@ -764,7 +765,7 @@ static off_t vcd_plugin_get_length (inpu
return (off_t) 0;
}
--#elif defined (__FreeBSD__)
+-#elif defined (__FreeBSD_kernel__)
+#elif (defined(BSD) && BSD >= 199306)
static off_t vcd_plugin_get_length (input_plugin_t *this_gen) {
vcd_input_plugin_t *this = (vcd_input_plugin_t *) this_gen;
off_t len ;
-@@ -862,6 +863,10 @@ static int vcd_plugin_open (input_plugin
+@@ -859,6 +860,10 @@ static int vcd_plugin_open (input_plugin
this->cur_min = this->cls->tocent[this->cur_track].cdte_addr.msf.minute;
this->cur_sec = this->cls->tocent[this->cur_track].cdte_addr.msf.second;
this->cur_frame = this->cls->tocent[this->cur_track].cdte_addr.msf.frame;
@@ -81,6 +81,6 @@ $NetBSD: patch-ae,v 1.4 2007/06/15 18:20:06 drochner Exp $
+ this->cur_min = this->cls->tocent[this->cur_track+1 - this->cls->tochdr.starting_track].addr.msf.minute;
+ this->cur_sec = this->cls->tocent[this->cur_track+1 - this->cls->tochdr.starting_track].addr.msf.second;
+ this->cur_frame = this->cls->tocent[this->cur_track+1 - this->cls->tochdr.starting_track].addr.msf.frame;
- #elif defined (__FreeBSD__)
+ #elif defined (__FreeBSD_kernel__)
{
int bsize = 2352;
diff --git a/multimedia/xine-lib/patches/patch-ag b/multimedia/xine-lib/patches/patch-ag
index 0ecdd83e0d5..8388ae4b104 100644
--- a/multimedia/xine-lib/patches/patch-ag
+++ b/multimedia/xine-lib/patches/patch-ag
@@ -1,6 +1,6 @@
-$NetBSD: patch-ag,v 1.17 2007/11/22 20:20:21 drochner Exp $
+$NetBSD: patch-ag,v 1.18 2008/01/11 16:05:27 drochner Exp $
---- configure.ac.orig 2007-08-25 15:27:01.000000000 +0200
+--- configure.ac.orig 2008-01-04 19:02:22.000000000 +0100
+++ configure.ac
@@ -98,7 +98,7 @@ dnl ------------------------------------
AC_CANONICAL_HOST
@@ -104,12 +104,12 @@ $NetBSD: patch-ag,v 1.17 2007/11/22 20:20:21 drochner Exp $
AC_DEFINE([HAVE_WIN32_CDROM], [1],
[Define 1 if you have MinGW CD-ROM support])
;;
-- freebsd4.*)
-+ freebsd4.* | dragonfly*)
+- freebsd4.*|kfreebsd*-gnu)
++ freebsd4.*|kfreebsd*-gnu|dragonfly*)
AC_DEFINE([HAVE_FREEBSD_CDROM], [1],
[Define 1 if you have FreeBSD CD-ROM support])
;;
-@@ -2581,7 +2598,7 @@ case $host in
+@@ -2591,7 +2608,7 @@ case $host in
dnl FreeBSD (et al.) does not complete linking for shared objects when pthreads
dnl are requested, as different implementations are present; to avoid problems
dnl use -Wl,-z,defs only for those platform not behaving this way.
diff --git a/multimedia/xine-lib/patches/patch-ap b/multimedia/xine-lib/patches/patch-ap
index c0b32dcdacd..6b7bf720726 100644
--- a/multimedia/xine-lib/patches/patch-ap
+++ b/multimedia/xine-lib/patches/patch-ap
@@ -1,6 +1,6 @@
-$NetBSD: patch-ap,v 1.6 2007/11/22 20:20:22 drochner Exp $
+$NetBSD: patch-ap,v 1.7 2008/01/11 16:05:27 drochner Exp $
---- src/dxr3/Makefile.am.orig 2007-08-19 01:36:45.000000000 +0200
+--- src/dxr3/Makefile.am.orig 2008-01-01 18:07:56.000000000 +0100
+++ src/dxr3/Makefile.am
@@ -16,6 +16,9 @@ endif
if HAVE_LIBRTE
@@ -16,8 +16,8 @@ $NetBSD: patch-ap,v 1.6 2007/11/22 20:20:22 drochner Exp $
dxr3_scr.c \
video_out_dxr3.c
--xineplug_vo_out_dxr3_la_LIBADD = $(link_fame) $(link_rte) $(link_x_libs) $(XINE_LIB) $(LTLIBINTL) $(DYNAMIC_LD_LIBS) -lm
-+xineplug_vo_out_dxr3_la_LIBADD = $(link_fame) $(link_rte) $(link_xinerama) $(link_x_libs) $(XINE_LIB) $(LTLIBINTL) $(DYNAMIC_LD_LIBS) -lm
+-xineplug_vo_out_dxr3_la_LIBADD = $(XINE_LIB) $(link_fame) $(link_rte) $(link_x_libs) $(LTLIBINTL) $(DYNAMIC_LD_LIBS) -lm
++xineplug_vo_out_dxr3_la_LIBADD = $(XINE_LIB) $(link_fame) $(link_rte) $(link_xinerama) $(link_x_libs) $(LTLIBINTL) $(DYNAMIC_LD_LIBS) -lm
xineplug_vo_out_dxr3_la_CFLAGS = $(VISIBILITY_FLAG) $(AM_CFLAGS)
xineplug_vo_out_dxr3_la_LDFLAGS = -avoid-version -module
diff --git a/multimedia/xine-lib/patches/patch-fa b/multimedia/xine-lib/patches/patch-fa
new file mode 100644
index 00000000000..dccf4f04d0c
--- /dev/null
+++ b/multimedia/xine-lib/patches/patch-fa
@@ -0,0 +1,14 @@
+$NetBSD: patch-fa,v 1.1 2008/01/11 16:05:27 drochner Exp $
+
+--- m4/pthreads.m4.orig 2008-01-10 16:56:36.000000000 +0100
++++ m4/pthreads.m4
+@@ -37,6 +37,9 @@ AC_DEFUN([CC_PTHREAD_FLAGS], [
+ esac
+ fi
+
++dnl compensate for pkgsrc pthread.bl3 smartness
++ PTHREAD_LIBS="${PTHREAD_LDFLAGS} ${PTHREAD_LIBS}"
++
+ AC_CACHE_CHECK([if $CC supports Pthread],
+ AS_TR_SH([cc_cv_pthreads]),
+ [ac_save_CFLAGS="$CFLAGS"
diff --git a/multimedia/xine-lib/patches/patch-ga b/multimedia/xine-lib/patches/patch-ga
new file mode 100644
index 00000000000..57ce3b080ac
--- /dev/null
+++ b/multimedia/xine-lib/patches/patch-ga
@@ -0,0 +1,164 @@
+$NetBSD: patch-ga,v 1.1 2008/01/11 16:05:28 drochner Exp $
+
+--- src/input/libreal/rmff.c.orig 2008-01-01 14:30:08.000000000 +0100
++++ src/input/libreal/rmff.c
+@@ -35,9 +35,14 @@
+ * writes header data to a buffer
+ */
+
+-static void rmff_dump_fileheader(rmff_fileheader_t *fileheader, char *buffer) {
++static int rmff_dump_fileheader(rmff_fileheader_t *fileheader, uint8_t *buffer,
++int bufsize) {
++
++ if (!fileheader) return 0;
++
++ if (bufsize < RMFF_FILEHEADER_SIZE)
++ return -1;
+
+- if (!fileheader) return;
+ fileheader->object_id=_X_BE_32(&fileheader->object_id);
+ fileheader->size=_X_BE_32(&fileheader->size);
+ fileheader->object_version=_X_BE_16(&fileheader->object_version);
+@@ -53,11 +58,17 @@ static void rmff_dump_fileheader(rmff_fi
+ fileheader->file_version=_X_BE_32(&fileheader->file_version);
+ fileheader->num_headers=_X_BE_32(&fileheader->num_headers);
+ fileheader->object_id=_X_BE_32(&fileheader->object_id);
++
++ return RMFF_FILEHEADER_SIZE;
+ }
+
+-static void rmff_dump_prop(rmff_prop_t *prop, char *buffer) {
++static int rmff_dump_prop(rmff_prop_t *prop, uint8_t *buffer, int bufsize) {
++
++ if (!prop) return 0;
++
++ if (bufsize < RMFF_PROPHEADER_SIZE)
++ return -1;
+
+- if (!prop) return;
+ prop->object_id=_X_BE_32(&prop->object_id);
+ prop->size=_X_BE_32(&prop->size);
+ prop->object_version=_X_BE_16(&prop->object_version);
+@@ -93,13 +104,20 @@ static void rmff_dump_prop(rmff_prop_t *
+ prop->num_streams=_X_BE_16(&prop->num_streams);
+ prop->flags=_X_BE_16(&prop->flags);
+ prop->object_id=_X_BE_32(&prop->object_id);
++
++ return RMFF_PROPHEADER_SIZE;
+ }
+
+-static void rmff_dump_mdpr(rmff_mdpr_t *mdpr, char *buffer) {
++static int rmff_dump_mdpr(rmff_mdpr_t *mdpr, uint8_t *buffer, int bufsize) {
+
+ int s1, s2, s3;
+
+- if (!mdpr) return;
++ if (!mdpr) return 0;
++
++ if (bufsize < RMFF_MDPRHEADER_SIZE + mdpr->type_specific_len +
++ mdpr->stream_name_size + mdpr->mime_type_size)
++ return -1;
++
+ mdpr->object_id=_X_BE_32(&mdpr->object_id);
+ mdpr->size=_X_BE_32(&mdpr->size);
+ mdpr->object_version=_X_BE_16(&mdpr->object_version);
+@@ -141,13 +159,19 @@ static void rmff_dump_mdpr(rmff_mdpr_t *
+ mdpr->duration=_X_BE_32(&mdpr->duration);
+ mdpr->object_id=_X_BE_32(&mdpr->object_id);
+
++ return RMFF_MDPRHEADER_SIZE + s1 + s2 + s3;
+ }
+
+-static void rmff_dump_cont(rmff_cont_t *cont, char *buffer) {
++static int rmff_dump_cont(rmff_cont_t *cont, uint8_t *buffer, int bufsize) {
+
+ int p;
+
+- if (!cont) return;
++ if (!cont) return 0;
++
++ if (bufsize < RMFF_CONTHEADER_SIZE + cont->title_len + cont->author_len +
++ cont->copyright_len + cont->comment_len)
++ return -1;
++
+ cont->object_id=_X_BE_32(&cont->object_id);
+ cont->size=_X_BE_32(&cont->size);
+ cont->object_version=_X_BE_16(&cont->object_version);
+@@ -181,11 +205,19 @@ static void rmff_dump_cont(rmff_cont_t *
+ cont->size=_X_BE_32(&cont->size);
+ cont->object_version=_X_BE_16(&cont->object_version);
+ cont->object_id=_X_BE_32(&cont->object_id);
++
++ return RMFF_CONTHEADER_SIZE + cont->title_len + cont->author_len +
++ cont->copyright_len + cont->comment_len;
+ }
+
+-static void rmff_dump_dataheader(rmff_data_t *data, char *buffer) {
++static int rmff_dump_dataheader(rmff_data_t *data, uint8_t *buffer, int
++bufsize) {
++
++ if (!data) return 0;
++
++ if (bufsize < RMFF_DATAHEADER_SIZE)
++ return -1;
+
+- if (!data) return;
+ data->object_id=_X_BE_32(&data->object_id);
+ data->size=_X_BE_32(&data->size);
+ data->object_version=_X_BE_16(&data->object_version);
+@@ -201,31 +233,43 @@ static void rmff_dump_dataheader(rmff_da
+ data->size=_X_BE_32(&data->size);
+ data->object_version=_X_BE_16(&data->object_version);
+ data->object_id=_X_BE_32(&data->object_id);
++
++ return RMFF_DATAHEADER_SIZE;
+ }
+
+-int rmff_dump_header(rmff_header_t *h, char *buffer, int max) {
++int rmff_dump_header(rmff_header_t *h, void *buf_gen, int max) {
++ uint8_t *buffer = buf_gen;
+
+- int written=0;
++ int written=0, size;
+ rmff_mdpr_t **stream=h->streams;
+
+- rmff_dump_fileheader(h->fileheader, &buffer[written]);
+- written+=h->fileheader->size;
+- rmff_dump_prop(h->prop, &buffer[written]);
+- written+=h->prop->size;
+- rmff_dump_cont(h->cont, &buffer[written]);
+- written+=h->cont->size;
++ if ((size=rmff_dump_fileheader(h->fileheader, &buffer[written], max)) < 0)
++ return -1;
++ written+=size;
++ max -= size;
++ if ((size=rmff_dump_prop(h->prop, &buffer[written], max)) < 0)
++ return -1;
++ written+=size;
++ max -= size;
++ if ((size=rmff_dump_cont(h->cont, &buffer[written], max)) < 0)
++ return -1;
++ written+=size;
++ max -= size;
+ if (stream)
+ {
+ while(*stream)
+ {
+- rmff_dump_mdpr(*stream, &buffer[written]);
+- written+=(*stream)->size;
++ if ((size=rmff_dump_mdpr(*stream, &buffer[written], max)) < 0)
++ return -1;
++ written+=size;
++ max -= size;
+ stream++;
+ }
+ }
+
+- rmff_dump_dataheader(h->data, &buffer[written]);
+- written+=18;
++ if ((size=rmff_dump_dataheader(h->data, &buffer[written], max)) < 0)
++ return -1;
++ written+=size;
+
+ return written;
+ }
diff --git a/multimedia/xine-lib/patches/patch-gb b/multimedia/xine-lib/patches/patch-gb
new file mode 100644
index 00000000000..5b2c8cd333b
--- /dev/null
+++ b/multimedia/xine-lib/patches/patch-gb
@@ -0,0 +1,26 @@
+$NetBSD: patch-gb,v 1.1 2008/01/11 16:05:28 drochner Exp $
+
+--- src/input/libreal/rmff.h.orig 2008-01-01 14:30:08.000000000 +0100
++++ src/input/libreal/rmff.h
+@@ -39,6 +39,12 @@
+
+ #define RMFF_HEADER_SIZE 0x12
+
++#define RMFF_FILEHEADER_SIZE 18
++#define RMFF_PROPHEADER_SIZE 50
++#define RMFF_MDPRHEADER_SIZE 46
++#define RMFF_CONTHEADER_SIZE 18
++#define RMFF_DATAHEADER_SIZE 18
++
+ #define FOURCC_TAG( ch0, ch1, ch2, ch3 ) \
+ (((long)(unsigned char)(ch3) ) | \
+ ( (long)(unsigned char)(ch2) << 8 ) | \
+@@ -245,7 +251,7 @@ int rmff_get_header_size(rmff_header_t *
+ /*
+ * dumps the header <h> to <buffer>. <max> is the size of <buffer>
+ */
+-int rmff_dump_header(rmff_header_t *h, char *buffer, int max);
++int rmff_dump_header(rmff_header_t *h, void *buffer, int max);
+
+ /*
+ * dumps a packet header
diff --git a/multimedia/xine-lib/patches/patch-gc b/multimedia/xine-lib/patches/patch-gc
new file mode 100644
index 00000000000..45daa1f8f41
--- /dev/null
+++ b/multimedia/xine-lib/patches/patch-gc
@@ -0,0 +1,24 @@
+$NetBSD: patch-gc,v 1.1 2008/01/11 16:05:28 drochner Exp $
+
+--- src/input/librtsp/rtsp_session.c.orig 2008-01-01 14:30:08.000000000 +0100
++++ src/input/librtsp/rtsp_session.c
+@@ -148,6 +148,11 @@ connect:
+
+ rtsp_session->header_left =
+ rtsp_session->header_len = rmff_dump_header(h,rtsp_session->header,HEADER_SIZE);
++ if (rtsp_session->header_len < 0) {
++ xprintf (stream->xine, XINE_VERBOSITY_LOG,
++ _("rtsp_session: rtsp server returned overly-large headers, session can not be established.\n"));
++ goto session_abort;
++ }
+
+ xine_buffer_copyin(rtsp_session->recv, 0, rtsp_session->header, rtsp_session->header_len);
+ rtsp_session->recv_size = rtsp_session->header_len;
+@@ -157,6 +162,7 @@ connect:
+ {
+ xprintf(stream->xine, XINE_VERBOSITY_LOG,
+ _("rtsp_session: rtsp server type '%s' not supported yet. sorry.\n"), server);
++session_abort:
+ rtsp_close(rtsp_session->s);
+ free(server);
+ xine_buffer_free(rtsp_session->recv);