OBS User unknown 2008-03-27 22:30:14 +00:00 committed by Git OBS Bridge
parent 36e0db74c9
commit e6182c5433
13 changed files with 762 additions and 103 deletions

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8f5a180fd5e129330f9893e5a89e38577d347322d3fd3240f5683ab7bd4df3c9
size 22308
oid sha256:ab172925fb278e5953526435c3a6aad7b3969307051ed23db86ff1473c07aa0f
size 21891

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:897b552cce7c9b13e11263dfcb82111b64d6fa38b27c6d1adc85c0a88ea3b798
size 5005675

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5ebbe7eac3eea9cdcea19cdc206343dcff301ee3b1947c789938f75e76783805
size 5065527

View File

@ -1,6 +1,8 @@
--- xine-lib-1.1.7.org/configure.ac 2007-08-16 11:12:26.000000000 +0000
+++ xine-lib-1.1.7/configure.ac 2007-08-16 11:12:25.000000000 +0000
@@ -2509,6 +2509,28 @@
Index: xine-lib-1.1.11/configure.ac
===================================================================
--- xine-lib-1.1.11.orig/configure.ac
+++ xine-lib-1.1.11/configure.ac
@@ -2545,6 +2545,28 @@ fi
AM_CONDITIONAL(HAVE_W32DLL, test "x$enable_w32dll" != "xno")
@ -29,9 +31,11 @@
dnl ---------------------------------------------
dnl some include paths ( !!! DO NOT REMOVE !!! )
--- xine-lib-1.1.7.org/src/xine-engine/xine.c 2007-08-16 11:12:25.000000000 +0000
+++ xine-lib-1.1.7/src/xine-engine/xine.c 2007-08-16 11:12:21.000000000 +0000
@@ -1643,6 +1643,15 @@
Index: xine-lib-1.1.11/src/xine-engine/xine.c
===================================================================
--- xine-lib-1.1.11.orig/src/xine-engine/xine.c
+++ xine-lib-1.1.11/src/xine-engine/xine.c
@@ -1780,6 +1780,15 @@ void xine_init (xine_t *this) {
0, NULL, this);
/*
@ -47,9 +51,11 @@
* keep track of all opened streams
*/
this->streams = xine_list_new();
--- xine-lib-1.1.7.org/src/xine-engine/video_decoder.c 2007-08-16 11:12:25.000000000 +0000
+++ xine-lib-1.1.7/src/xine-engine/video_decoder.c 2007-08-16 11:40:56.000000000 +0000
@@ -39,6 +39,7 @@
Index: xine-lib-1.1.11/src/xine-engine/video_decoder.c
===================================================================
--- xine-lib-1.1.11.orig/src/xine-engine/video_decoder.c
+++ xine-lib-1.1.11/src/xine-engine/video_decoder.c
@@ -37,6 +37,7 @@
#include "xine_internal.h"
#include "xineutils.h"
@ -57,20 +63,22 @@
#include <sched.h>
#define SPU_SLEEP_INTERVAL (90000/2)
@@ -369,6 +370,10 @@
@@ -376,6 +377,10 @@ static void *video_decoder_loop (void *s
stream->video_decoder_plugin = _x_get_video_decoder (stream, streamtype);
_x_stream_info_set(stream, XINE_STREAM_INFO_VIDEO_HANDLED, (stream->video_decoder_plugin != NULL));
+ if(buf->type != buftype_unknown && !stream->video_decoder_plugin)
+ _x_install_plugins_helper(stream,"decoder-video", buf->type, _x_buf_video_name( buf->type ));
+ _x_install_plugins_helper(stream,"decoder-video", buf->type, _x_buf_video_name( buf->type ));
+
+
+
}
if (stream->video_decoder_plugin)
--- xine-lib-1.1.7.org/src/xine-engine/audio_decoder.c 2007-08-16 11:12:25.000000000 +0000
+++ xine-lib-1.1.7/src/xine-engine/audio_decoder.c 2007-08-16 11:41:24.000000000 +0000
@@ -43,6 +43,7 @@
Index: xine-lib-1.1.11/src/xine-engine/audio_decoder.c
===================================================================
--- xine-lib-1.1.11.orig/src/xine-engine/audio_decoder.c
+++ xine-lib-1.1.11/src/xine-engine/audio_decoder.c
@@ -41,6 +41,7 @@
#include "xine_internal.h"
#include "xineutils.h"
@ -78,7 +86,7 @@
static void *audio_decoder_loop (void *stream_gen) {
@@ -340,6 +341,10 @@
@@ -339,6 +340,10 @@ static void *audio_decoder_loop (void *s
_x_stream_info_set(stream, XINE_STREAM_INFO_AUDIO_HANDLED,
(stream->audio_decoder_plugin != NULL));
@ -89,9 +97,11 @@
}
if (audio_type != stream->audio_type) {
--- xine-lib-1.1.7.org/src/xine-engine/Makefile.am 2007-08-16 11:12:25.000000000 +0000
+++ xine-lib-1.1.7/src/xine-engine/Makefile.am 2007-08-16 11:12:21.000000000 +0000
@@ -19,7 +19,7 @@
Index: xine-lib-1.1.11/src/xine-engine/Makefile.am
===================================================================
--- xine-lib-1.1.11.orig/src/xine-engine/Makefile.am
+++ xine-lib-1.1.11/src/xine-engine/Makefile.am
@@ -19,7 +19,7 @@ libxine_la_SOURCES = xine.c metronom.c c
video_overlay.c osd.c scratch.c demux.c vo_scale.c \
xine_interface.c post.c tvmode.c broadcaster.c io_helper.c \
input_rip.c input_cache.c info_helper.c refcounter.c \
@ -100,7 +110,7 @@
# FIXME: these are currently unused:
EXTRA_DIST = lrb.c lrb.h accel_xvmc.h
@@ -39,7 +39,8 @@
@@ -39,7 +39,8 @@ xineinclude_HEADERS = buffer.h metronom
audio_out.h resample.h video_out.h xine_internal.h spu_decoder.h \
video_overlay.h osd.h scratch.h xine_plugin.h xineintl.h \
plugin_catalog.h audio_decoder.h video_decoder.h post.h \
@ -110,11 +120,13 @@
noinst_HEADERS = bswap.h ffmpeg_bswap.h
--- /dev/null 2007-08-16 10:48:37.000000000 +0000
+++ xine-lib-1.1.7/src/xine-engine/install_plugins_helper.h 2007-08-16 11:12:21.000000000 +0000
Index: xine-lib-1.1.11/src/xine-engine/install_plugins_helper.h
===================================================================
--- /dev/null
+++ xine-lib-1.1.11/src/xine-engine/install_plugins_helper.h
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2007 Sascha Sommer
+ * Copyright (C) 2007 Sascha Sommer
+ *
+ * This file is part of xine, a free video player.
+ *
@ -142,14 +154,16 @@
+#include "xine_internal.h"
+
+/*
+ * execute install plugins helper
+ * execute install plugins helper
+ */
+void _x_install_plugins_helper(xine_stream_t *stream, char* plugin_type, uint32_t type, char* plugin_desc) XINE_PROTECTED;
+
+
+#endif
--- /dev/null 2007-03-17 21:04:06.000000000 +0100
+++ xine-lib-1.1.7/src/xine-engine/install_plugins_helper.c 2007-08-18 14:11:15.000000000 +0200
Index: xine-lib-1.1.11/src/xine-engine/install_plugins_helper.c
===================================================================
--- /dev/null
+++ xine-lib-1.1.11/src/xine-engine/install_plugins_helper.c
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2007 Sascha Sommer
@ -230,7 +244,7 @@
+ char* helper = get_helper(stream);
+ FILE* fp;
+
+ if(helper && xine_config_lookup_entry(stream->xine, "media.plugins_helper", &cfgentry) && cfgentry.num_value
+ if(helper && xine_config_lookup_entry(stream->xine, "media.plugins_helper", &cfgentry) && cfgentry.num_value
+ && (fp = fopen(helper,"rb") )) {
+ char procname[PROCNAME_LEN];
+// char* procname = getenv("_"); /* might deliver /opt/kde3/bin/start_kdeinit_wrapper etc... */
@ -254,6 +268,6 @@
+ }else{
+ waitpid(pid, NULL, 0);
+ }
+ }
+ }
+}
+

562
xine-lib-CVE-2008-1482.diff Normal file
View File

@ -0,0 +1,562 @@
# HG changeset patch
# User Darren Salt <linux@youmustbejoking.demon.co.uk>
# Date 1206237088 0
# Node ID a3f2772fd14b57e0557ef45797ff04c768657a7e
# Parent 65c1570fcf1dfcb8e5fc1d6b8ed8a296ab776e9d
Check for failure of various memory allocations. (SA29484)
Ref. http://aluigi.altervista.org/adv/xinehof-adv.txt
diff --git a/src/demuxers/demux_film.c b/src/demuxers/demux_film.c
--- a/src/demuxers/demux_film.c
+++ b/src/demuxers/demux_film.c
@@ -257,6 +257,8 @@ static int open_film_file(demux_film_t *
film->sample_count = _X_BE_32(&film_header[i + 12]);
film->sample_table =
xine_xmalloc(film->sample_count * sizeof(film_sample_t));
+ if (!film->sample_table)
+ goto film_abort;
for (j = 0; j < film->sample_count; j++) {
film->sample_table[j].sample_offset =
@@ -333,11 +335,14 @@ static int open_film_file(demux_film_t *
free(film->interleave_buffer);
film->interleave_buffer =
xine_xmalloc(film->sample_table[0].sample_size);
+ if (!film->interleave_buffer)
+ goto film_abort;
}
break;
default:
xine_log(film->stream->xine, XINE_LOG_MSG, _("unrecognized FILM chunk\n"));
+ film_abort:
free (film->interleave_buffer);
free (film->sample_table);
free (film_header);
diff --git a/src/demuxers/demux_flv.c b/src/demuxers/demux_flv.c
--- a/src/demuxers/demux_flv.c
+++ b/src/demuxers/demux_flv.c
@@ -85,7 +85,7 @@ typedef struct {
off_t filesize;
flv_index_entry_t *index;
- int num_indices;
+ unsigned int num_indices;
unsigned int cur_pts;
@@ -209,7 +209,7 @@ static int parse_flv_var(demux_flv_t *th
unsigned char *end = buf + size;
char *str;
unsigned char type;
- int len, num;
+ unsigned int len, num;
if (size < 1)
return 0;
@@ -283,6 +283,8 @@ static int parse_flv_var(demux_flv_t *th
str = tmp + 2;
tmp += len + 2;
len = parse_flv_var(this, tmp, end-tmp, str, len);
+ if (!len)
+ return 0;
tmp += len;
}
if (*tmp++ != FLV_DATA_TYPE_ENDOBJECT)
@@ -298,6 +300,8 @@ static int parse_flv_var(demux_flv_t *th
str = tmp + 2;
tmp += len + 2;
len = parse_flv_var(this, tmp, end-tmp, str, len);
+ if (!len)
+ return 0;
tmp += len;
}
break;
@@ -310,6 +314,8 @@ static int parse_flv_var(demux_flv_t *th
if (this->index)
free(this->index);
this->index = xine_xmalloc(num*sizeof(flv_index_entry_t));
+ if (!this->index)
+ return 0;
this->num_indices = num;
}
for (num = 0; num < this->num_indices && tmp < end; num++) {
@@ -326,6 +332,8 @@ static int parse_flv_var(demux_flv_t *th
if (this->index)
free(this->index);
this->index = xine_xmalloc(num*sizeof(flv_index_entry_t));
+ if (!this->index)
+ return 0;
this->num_indices = num;
}
for (num = 0; num < this->num_indices && tmp < end; num++) {
@@ -339,6 +347,8 @@ static int parse_flv_var(demux_flv_t *th
}
while (num-- && tmp < end) {
len = parse_flv_var(this, tmp, end-tmp, NULL, 0);
+ if (!len)
+ return 0;
tmp += len;
}
break;
@@ -360,7 +370,7 @@ static void parse_flv_script(demux_flv_t
unsigned char *end = buf + size;
int len;
- if (this->input->read(this->input, buf, size ) != size) {
+ if (!buf || this->input->read(this->input, buf, size ) != size) {
this->status = DEMUX_FINISHED;
free(buf);
return;
diff --git a/src/demuxers/demux_qt.c b/src/demuxers/demux_qt.c
--- a/src/demuxers/demux_qt.c
+++ b/src/demuxers/demux_qt.c
@@ -739,38 +739,52 @@ static void parse_meta_atom(qt_info *inf
if (current_atom == ART_ATOM) {
string_size = _X_BE_32(&meta_atom[i + 4]) - 16 + 1;
info->artist = xine_xmalloc(string_size);
- strncpy(info->artist, &meta_atom[i + 20], string_size - 1);
- info->artist[string_size - 1] = 0;
+ if (info->artist) {
+ strncpy(info->artist, &meta_atom[i + 20], string_size - 1);
+ info->artist[string_size - 1] = 0;
+ }
} else if (current_atom == NAM_ATOM) {
string_size = _X_BE_32(&meta_atom[i + 4]) - 16 + 1;
info->name = xine_xmalloc(string_size);
- strncpy(info->name, &meta_atom[i + 20], string_size - 1);
- info->name[string_size - 1] = 0;
+ if (info->name) {
+ strncpy(info->name, &meta_atom[i + 20], string_size - 1);
+ info->name[string_size - 1] = 0;
+ }
} else if (current_atom == ALB_ATOM) {
string_size = _X_BE_32(&meta_atom[i + 4]) - 16 + 1;
info->album = xine_xmalloc(string_size);
- strncpy(info->album, &meta_atom[i + 20], string_size - 1);
- info->album[string_size - 1] = 0;
+ if (info->album) {
+ strncpy(info->album, &meta_atom[i + 20], string_size - 1);
+ info->album[string_size - 1] = 0;
+ }
} else if (current_atom == GEN_ATOM) {
string_size = _X_BE_32(&meta_atom[i + 4]) - 16 + 1;
info->genre = xine_xmalloc(string_size);
- strncpy(info->genre, &meta_atom[i + 20], string_size - 1);
- info->genre[string_size - 1] = 0;
+ if (info->genre) {
+ strncpy(info->genre, &meta_atom[i + 20], string_size - 1);
+ info->genre[string_size - 1] = 0;
+ }
} else if (current_atom == TOO_ATOM) {
string_size = _X_BE_32(&meta_atom[i + 4]) - 16 + 1;
info->comment = xine_xmalloc(string_size);
- strncpy(info->comment, &meta_atom[i + 20], string_size - 1);
- info->comment[string_size - 1] = 0;
+ if (info->comment) {
+ strncpy(info->comment, &meta_atom[i + 20], string_size - 1);
+ info->comment[string_size - 1] = 0;
+ }
} else if (current_atom == WRT_ATOM) {
string_size = _X_BE_32(&meta_atom[i + 4]) - 16 + 1;
info->composer = xine_xmalloc(string_size);
- strncpy(info->composer, &meta_atom[i + 20], string_size - 1);
- info->composer[string_size - 1] = 0;
+ if (info->composer) {
+ strncpy(info->composer, &meta_atom[i + 20], string_size - 1);
+ info->composer[string_size - 1] = 0;
+ }
} else if (current_atom == DAY_ATOM) {
string_size = _X_BE_32(&meta_atom[i + 4]) - 16 + 1;
info->year = xine_xmalloc(string_size);
- strncpy(info->year, &meta_atom[i + 20], string_size - 1);
- info->year[string_size - 1] = 0;
+ if (info->year) {
+ strncpy(info->year, &meta_atom[i + 20], string_size - 1);
+ info->year[string_size - 1] = 0;
+ }
}
}
@@ -1549,32 +1563,29 @@ static qt_error parse_reference_atom (re
current_atom = _X_BE_32(&ref_atom[i]);
if (current_atom == RDRF_ATOM) {
+ size_t string_size = _X_BE_32(&ref_atom[i + 12]);
+ size_t url_offset = 0;
+
+ if (string_size >= current_atom_size || i + string_size >= ref_atom_size)
+ return QT_NOT_A_VALID_FILE;
/* if the URL starts with "http://", copy it */
- if (strncmp(&ref_atom[i + 16], "http://", 7) == 0
- || strncmp(&ref_atom[i + 16], "rtsp://", 7) == 0) {
-
- /* URL is spec'd to terminate with a NULL; don't trust it */
- ref->url = xine_xmalloc(_X_BE_32(&ref_atom[i + 12]) + 1);
- strncpy(ref->url, &ref_atom[i + 16], _X_BE_32(&ref_atom[i + 12]));
- ref->url[_X_BE_32(&ref_atom[i + 12]) - 1] = '\0';
-
- } else {
-
- int string_size;
-
- if (base_mrl)
- string_size = strlen(base_mrl) + _X_BE_32(&ref_atom[i + 12]) + 1;
- else
- string_size = _X_BE_32(&ref_atom[i + 12]) + 1;
-
- /* otherwise, append relative URL to base MRL */
- ref->url = xine_xmalloc(string_size);
- if (base_mrl)
- strcpy(ref->url, base_mrl);
- strncat(ref->url, &ref_atom[i + 16], _X_BE_32(&ref_atom[i + 12]));
- ref->url[string_size - 1] = '\0';
- }
+ if ( memcmp(&ref_atom[i + 16], "http://", 7) &&
+ memcmp(&ref_atom[i + 16], "rtsp://", 7) &&
+ base_mrl )
+ url_offset = strlen(base_mrl);
+
+ /* otherwise, append relative URL to base MRL */
+ string_size += url_offset;
+
+ ref->url = xine_xmalloc(string_size + 1);
+
+ if ( url_offset )
+ strcpy(ref->url, base_mrl);
+
+ memcpy(ref->url + url_offset, &ref_atom[i + 16], _X_BE_32(&ref_atom[i + 12]));
+
+ ref->url[string_size] = '\0';
debug_atom_load(" qt rdrf URL reference:\n %s\n", ref->url);
@@ -1993,8 +2004,12 @@ static void parse_moov_atom(qt_info *inf
info->references = (reference_t *)realloc(info->references,
info->reference_count * sizeof(reference_t));
- parse_reference_atom(&info->references[info->reference_count - 1],
- &moov_atom[i - 4], info->base_mrl);
+ error = parse_reference_atom(&info->references[info->reference_count - 1],
+ &moov_atom[i - 4], info->base_mrl);
+ if (error != QT_OK) {
+ info->last_error = error;
+ return;
+ }
} else {
debug_atom_load(" qt: unknown atom into the moov atom (0x%08X)\n", current_atom);
diff --git a/src/demuxers/demux_real.c b/src/demuxers/demux_real.c
--- a/src/demuxers/demux_real.c
+++ b/src/demuxers/demux_real.c
@@ -175,7 +175,8 @@ static void real_parse_index(demux_real_
off_t original_pos = this->input->get_current_pos(this->input);
unsigned char index_chunk_header[INDEX_CHUNK_HEADER_SIZE];
unsigned char index_record[INDEX_RECORD_SIZE];
- int i, entries, stream_num;
+ int i;
+ unsigned int entries, stream_num;
real_index_entry_t **index;
while(next_index_chunk) {
@@ -230,10 +231,11 @@ static void real_parse_index(demux_real_
}
}
- if(index && entries) {
+ if(index && entries)
/* Allocate memory for index */
*index = xine_xmalloc(entries * sizeof(real_index_entry_t));
+ if(index && entries && *index) {
/* Read index */
for(i = 0; i < entries; i++) {
if(this->input->read(this->input, index_record, INDEX_RECORD_SIZE)
diff --git a/src/demuxers/demux_wc3movie.c b/src/demuxers/demux_wc3movie.c
--- a/src/demuxers/demux_wc3movie.c
+++ b/src/demuxers/demux_wc3movie.c
@@ -389,6 +389,12 @@ static int open_mve_file(demux_mve_t *th
/* load the palette chunks */
this->palettes = xine_xmalloc(this->number_of_shots * PALETTE_SIZE *
sizeof(palette_entry_t));
+
+ if (!this->shot_offsets || !this->palettes) {
+ free (this->shot_offsets);
+ return 0;
+ }
+
for (i = 0; i < this->number_of_shots; i++) {
/* make sure there was a valid palette chunk preamble */
if (this->input->read(this->input, preamble, PREAMBLE_SIZE) !=
@@ -460,8 +466,9 @@ static int open_mve_file(demux_mve_t *th
case BNAM_TAG:
/* load the name into the stream attributes */
- title = realloc (title, chunk_size);
- if (this->input->read(this->input, title, chunk_size) != chunk_size) {
+ free (title);
+ title = malloc (chunk_size);
+ if (!title || this->input->read(this->input, title, chunk_size) != chunk_size) {
free (title);
free (this->palettes);
free (this->shot_offsets);
diff --git a/src/demuxers/ebml.c b/src/demuxers/ebml.c
--- a/src/demuxers/ebml.c
+++ b/src/demuxers/ebml.c
@@ -424,10 +424,15 @@ int ebml_check_header(ebml_parser_t *ebm
case EBML_ID_DOCTYPE: {
char *text = malloc(elem.len + 1);
+ if (!text)
+ return 0;
text[elem.len] = '\0';
if (!ebml_read_ascii (ebml, &elem, text))
- return 0;
+ {
+ free (text);
+ return 0;
+ }
lprintf("doctype: %s\n", text);
if (ebml->doctype)
# HG changeset patch
# User Darren Salt <linux@youmustbejoking.demon.co.uk>
# Date 1206287553 0
# Node ID 6f9e9feb84e595be0482395722bc784764713fb3
# Parent a3f2772fd14b57e0557ef45797ff04c768657a7e
Replace various malloc(x*sizeof(y)) with calloc(x,sizeof(y)).
diff --git a/src/demuxers/demux_film.c b/src/demuxers/demux_film.c
--- a/src/demuxers/demux_film.c
+++ b/src/demuxers/demux_film.c
@@ -256,7 +256,7 @@ static int open_film_file(demux_film_t *
film->frequency = _X_BE_32(&film_header[i + 8]);
film->sample_count = _X_BE_32(&film_header[i + 12]);
film->sample_table =
- xine_xmalloc(film->sample_count * sizeof(film_sample_t));
+ calloc(film->sample_count, sizeof(film_sample_t));
if (!film->sample_table)
goto film_abort;
for (j = 0; j < film->sample_count; j++) {
diff --git a/src/demuxers/demux_flac.c b/src/demuxers/demux_flac.c
--- a/src/demuxers/demux_flac.c
+++ b/src/demuxers/demux_flac.c
@@ -164,7 +164,7 @@ static int open_flac_file(demux_flac_t *
case 3:
lprintf ("SEEKTABLE metadata, %d bytes\n", block_length);
flac->seekpoint_count = block_length / FLAC_SEEKPOINT_SIZE;
- flac->seekpoints = xine_xmalloc(flac->seekpoint_count *
+ flac->seekpoints = calloc(flac->seekpoint_count,
sizeof(flac_seekpoint_t));
for (i = 0; i < flac->seekpoint_count; i++) {
if (flac->input->read(flac->input, buffer, FLAC_SEEKPOINT_SIZE) != FLAC_SEEKPOINT_SIZE)
diff --git a/src/demuxers/demux_flv.c b/src/demuxers/demux_flv.c
--- a/src/demuxers/demux_flv.c
+++ b/src/demuxers/demux_flv.c
@@ -313,7 +313,7 @@ static int parse_flv_var(demux_flv_t *th
if (!this->index || this->num_indices != num) {
if (this->index)
free(this->index);
- this->index = xine_xmalloc(num*sizeof(flv_index_entry_t));
+ this->index = calloc(num, sizeof(flv_index_entry_t));
if (!this->index)
return 0;
this->num_indices = num;
@@ -331,7 +331,7 @@ static int parse_flv_var(demux_flv_t *th
if (!this->index || this->num_indices != num) {
if (this->index)
free(this->index);
- this->index = xine_xmalloc(num*sizeof(flv_index_entry_t));
+ this->index = calloc(num, sizeof(flv_index_entry_t));
if (!this->index)
return 0;
this->num_indices = num;
diff --git a/src/demuxers/demux_mpgaudio.c b/src/demuxers/demux_mpgaudio.c
--- a/src/demuxers/demux_mpgaudio.c
+++ b/src/demuxers/demux_mpgaudio.c
@@ -460,7 +460,7 @@ static vbri_header_t* parse_vbri_header(
lprintf("entry_frames: %d\n", vbri->entry_frames);
if ((ptr + (vbri->toc_entries + 1) * vbri->entry_size) >= (buf + bufsize)) return 0;
- vbri->toc = xine_xmalloc (sizeof(int) * (vbri->toc_entries + 1));
+ vbri->toc = calloc (vbri->toc_entries + 1, sizeof (int));
if (!vbri->toc) {
free (vbri);
return NULL;
diff --git a/src/demuxers/demux_qt.c b/src/demuxers/demux_qt.c
--- a/src/demuxers/demux_qt.c
+++ b/src/demuxers/demux_qt.c
@@ -911,8 +911,8 @@ static qt_error parse_trak_atom (qt_trak
debug_atom_load(" qt elst atom (edit list atom): %d entries\n",
trak->edit_list_count);
- trak->edit_list_table = (edit_list_table_t *)xine_xmalloc(
- trak->edit_list_count * sizeof(edit_list_table_t));
+ trak->edit_list_table = (edit_list_table_t *)calloc(
+ trak->edit_list_count, sizeof(edit_list_table_t));
if (!trak->edit_list_table) {
last_error = QT_NO_MEMORY;
goto free_trak;
@@ -947,7 +947,7 @@ static qt_error parse_trak_atom (qt_trak
/* allocate space for each of the properties unions */
trak->stsd_atoms_count = _X_BE_32(&trak_atom[i + 8]);
- trak->stsd_atoms = xine_xmalloc(trak->stsd_atoms_count * sizeof(properties_t));
+ trak->stsd_atoms = calloc(trak->stsd_atoms_count, sizeof(properties_t));
if (!trak->stsd_atoms) {
last_error = QT_NO_MEMORY;
goto free_trak;
@@ -1345,8 +1345,8 @@ static qt_error parse_trak_atom (qt_trak
/* allocate space and load table only if sample size is 0 */
if (trak->sample_size == 0) {
- trak->sample_size_table = (unsigned int *)malloc(
- trak->sample_size_count * sizeof(unsigned int));
+ trak->sample_size_table = (unsigned int *)calloc(
+ trak->sample_size_count, sizeof(unsigned int));
if (!trak->sample_size_table) {
last_error = QT_NO_MEMORY;
goto free_trak;
@@ -1376,8 +1376,8 @@ static qt_error parse_trak_atom (qt_trak
debug_atom_load(" qt stss atom (sample sync atom): %d sync samples\n",
trak->sync_sample_count);
- trak->sync_sample_table = (unsigned int *)malloc(
- trak->sync_sample_count * sizeof(unsigned int));
+ trak->sync_sample_table = (unsigned int *)calloc(
+ trak->sync_sample_count, sizeof(unsigned int));
if (!trak->sync_sample_table) {
last_error = QT_NO_MEMORY;
goto free_trak;
@@ -1405,8 +1405,8 @@ static qt_error parse_trak_atom (qt_trak
debug_atom_load(" qt stco atom (32-bit chunk offset atom): %d chunk offsets\n",
trak->chunk_offset_count);
- trak->chunk_offset_table = (int64_t *)malloc(
- trak->chunk_offset_count * sizeof(int64_t));
+ trak->chunk_offset_table = (int64_t *)calloc(
+ trak->chunk_offset_count, sizeof(int64_t));
if (!trak->chunk_offset_table) {
last_error = QT_NO_MEMORY;
goto free_trak;
@@ -1433,8 +1433,8 @@ static qt_error parse_trak_atom (qt_trak
debug_atom_load(" qt co64 atom (64-bit chunk offset atom): %d chunk offsets\n",
trak->chunk_offset_count);
- trak->chunk_offset_table = (int64_t *)malloc(
- trak->chunk_offset_count * sizeof(int64_t));
+ trak->chunk_offset_table = (int64_t *)calloc(
+ trak->chunk_offset_count, sizeof(int64_t));
if (!trak->chunk_offset_table) {
last_error = QT_NO_MEMORY;
goto free_trak;
@@ -1464,8 +1464,8 @@ static qt_error parse_trak_atom (qt_trak
debug_atom_load(" qt stsc atom (sample-to-chunk atom): %d entries\n",
trak->sample_to_chunk_count);
- trak->sample_to_chunk_table = (sample_to_chunk_table_t *)malloc(
- trak->sample_to_chunk_count * sizeof(sample_to_chunk_table_t));
+ trak->sample_to_chunk_table = (sample_to_chunk_table_t *)calloc(
+ trak->sample_to_chunk_count, sizeof(sample_to_chunk_table_t));
if (!trak->sample_to_chunk_table) {
last_error = QT_NO_MEMORY;
goto free_trak;
@@ -1499,8 +1499,8 @@ static qt_error parse_trak_atom (qt_trak
debug_atom_load(" qt stts atom (time-to-sample atom): %d entries\n",
trak->time_to_sample_count);
- trak->time_to_sample_table = (time_to_sample_table_t *)malloc(
- (trak->time_to_sample_count+1) * sizeof(time_to_sample_table_t));
+ trak->time_to_sample_table = (time_to_sample_table_t *)calloc(
+ trak->time_to_sample_count+1, sizeof(time_to_sample_table_t));
if (!trak->time_to_sample_table) {
last_error = QT_NO_MEMORY;
goto free_trak;
@@ -1697,8 +1697,7 @@ static qt_error build_frame_table(qt_tra
/* in this case, the total number of frames is equal to the number of
* entries in the sample size table */
trak->frame_count = trak->sample_size_count;
- trak->frames = (qt_frame *)malloc(
- trak->frame_count * sizeof(qt_frame));
+ trak->frames = (qt_frame *)calloc(trak->frame_count, sizeof(qt_frame));
if (!trak->frames)
return QT_NO_MEMORY;
trak->current_frame = 0;
@@ -1710,7 +1709,7 @@ static qt_error build_frame_table(qt_tra
pts_index_countdown =
trak->time_to_sample_table[pts_index].count;
- media_id_counts = xine_xmalloc(trak->stsd_atoms_count * sizeof(int));
+ media_id_counts = calloc(trak->stsd_atoms_count, sizeof(int));
if (!media_id_counts)
return QT_NO_MEMORY;
memset(media_id_counts, 0, trak->stsd_atoms_count * sizeof(int));
@@ -1848,8 +1847,7 @@ static qt_error build_frame_table(qt_tra
/* in this case, the total number of frames is equal to the number of
* chunks */
trak->frame_count = trak->chunk_offset_count;
- trak->frames = (qt_frame *)malloc(
- trak->frame_count * sizeof(qt_frame));
+ trak->frames = (qt_frame *)calloc(trak->frame_count, sizeof(qt_frame));
if (!trak->frames)
return QT_NO_MEMORY;
diff --git a/src/demuxers/demux_real.c b/src/demuxers/demux_real.c
--- a/src/demuxers/demux_real.c
+++ b/src/demuxers/demux_real.c
@@ -233,7 +233,7 @@ static void real_parse_index(demux_real_
if(index && entries)
/* Allocate memory for index */
- *index = xine_xmalloc(entries * sizeof(real_index_entry_t));
+ *index = calloc(entries, sizeof(real_index_entry_t));
if(index && entries && *index) {
/* Read index */
diff --git a/src/demuxers/demux_tta.c b/src/demuxers/demux_tta.c
--- a/src/demuxers/demux_tta.c
+++ b/src/demuxers/demux_tta.c
@@ -87,7 +87,7 @@ static int open_tta_file(demux_tta_t *th
return 0;
}
- this->seektable = xine_xmalloc(sizeof(uint32_t)*this->totalframes);
+ this->seektable = calloc(this->totalframes, sizeof(uint32_t));
this->input->read(this->input, this->seektable, sizeof(uint32_t)*this->totalframes);
/* Skip the CRC32 */
diff --git a/src/demuxers/demux_vmd.c b/src/demuxers/demux_vmd.c
--- a/src/demuxers/demux_vmd.c
+++ b/src/demuxers/demux_vmd.c
@@ -168,7 +168,7 @@ static int open_vmd_file(demux_vmd_t *th
return 0;
}
- this->frame_table = xine_xmalloc(this->frame_count * sizeof(vmd_frame_t));
+ this->frame_table = calloc(this->frame_count, sizeof(vmd_frame_t));
current_offset = this->data_start = _X_LE_32(&vmd_header[20]);
this->data_size = toc_offset - this->data_start;
diff --git a/src/demuxers/demux_wc3movie.c b/src/demuxers/demux_wc3movie.c
--- a/src/demuxers/demux_wc3movie.c
+++ b/src/demuxers/demux_wc3movie.c
@@ -378,7 +378,7 @@ static int open_mve_file(demux_mve_t *th
this->number_of_shots = _X_LE_32(&preamble[0]);
/* allocate space for the shot offset index and set offsets to 0 */
- this->shot_offsets = xine_xmalloc(this->number_of_shots * sizeof(off_t));
+ this->shot_offsets = calloc(this->number_of_shots, sizeof(off_t));
this->current_shot = 0;
for (i = 0; i < this->number_of_shots; i++)
this->shot_offsets[i] = 0;
@@ -387,7 +387,7 @@ static int open_mve_file(demux_mve_t *th
this->input->seek(this->input, 12, SEEK_CUR);
/* load the palette chunks */
- this->palettes = xine_xmalloc(this->number_of_shots * PALETTE_SIZE *
+ this->palettes = calloc(this->number_of_shots, PALETTE_SIZE *
sizeof(palette_entry_t));
if (!this->shot_offsets || !this->palettes) {

View File

@ -1,6 +1,8 @@
--- xine-lib-1.1.8/src/audio_out/audio_alsa_out.c
+++ xine-lib-1.1.8/src/audio_out/audio_alsa_out.c
@@ -44,6 +44,7 @@
Index: xine-lib-1.1.11/src/audio_out/audio_alsa_out.c
===================================================================
--- xine-lib-1.1.11.orig/src/audio_out/audio_alsa_out.c
+++ xine-lib-1.1.11/src/audio_out/audio_alsa_out.c
@@ -41,6 +41,7 @@
#ifdef HAVE_ALLOCA_H
#include <alloca.h>
#endif

View File

@ -1,7 +1,8 @@
diff -urp ../xine-lib-1.1.2.orig/src/input/input_dvd.c ./src/input/input_dvd.c
--- ../xine-lib-1.1.2.orig/src/input/input_dvd.c 2006-07-09 16:37:35.000000000 +0200
+++ ./src/input/input_dvd.c 2006-10-11 14:19:43.000000000 +0200
@@ -1391,7 +1391,12 @@ check_solaris_vold_device(dvd_input_clas
Index: src/input/input_dvd.c
===================================================================
--- src/input/input_dvd.c.orig
+++ src/input/input_dvd.c
@@ -1385,7 +1385,12 @@ check_solaris_vold_device(dvd_input_clas
static int dvd_parse_try_open(dvd_input_plugin_t *this, const char *locator)
{
@ -15,7 +16,7 @@ diff -urp ../xine-lib-1.1.2.orig/src/input/input_dvd.c ./src/input/input_dvd.c
/* FIXME: we temporarily special-case "dvd:/" for compatibility;
* actually "dvd:/" should play a DVD image stored in /, but for
@@ -1407,7 +1412,6 @@ static int dvd_parse_try_open(dvd_input_
@@ -1401,7 +1406,6 @@ static int dvd_parse_try_open(dvd_input_
xine_setenv("DVDCSS_RAW_DEVICE", "", 1);
} else {
/* use default DVD device */
@ -23,7 +24,7 @@ diff -urp ../xine-lib-1.1.2.orig/src/input/input_dvd.c ./src/input/input_dvd.c
xine_cfg_entry_t raw_device;
if (xine_config_lookup_entry(this->stream->xine,
"media.dvd.raw_device", &raw_device))
@@ -1415,6 +1419,23 @@ static int dvd_parse_try_open(dvd_input_
@@ -1409,6 +1413,23 @@ static int dvd_parse_try_open(dvd_input_
intended_dvd_device = class->dvd_device;
}
@ -47,7 +48,7 @@ diff -urp ../xine-lib-1.1.2.orig/src/input/input_dvd.c ./src/input/input_dvd.c
/* attempt to open DVD */
if (this->opened) {
if (intended_dvd_device == this->current_dvd_device) {
@@ -1477,8 +1498,11 @@ static int dvd_parse_mrl(dvd_input_plugi
@@ -1471,8 +1492,11 @@ static int dvd_parse_mrl(dvd_input_plugi
}
static int dvd_plugin_open (input_plugin_t *this_gen) {
@ -58,9 +59,9 @@ diff -urp ../xine-lib-1.1.2.orig/src/input/input_dvd.c ./src/input/input_dvd.c
+ plugin_node_t *node;
+ int i;
char *locator;
char *locator, *locator_orig;
char *title_part;
@@ -1487,6 +1511,23 @@ static int dvd_plugin_open (input_plugin
@@ -1481,6 +1505,23 @@ static int dvd_plugin_open (input_plugin
trace_print("Called\n");
@ -82,5 +83,5 @@ diff -urp ../xine-lib-1.1.2.orig/src/input/input_dvd.c ./src/input/input_dvd.c
+ }
+
/* we already checked the "dvd:/" MRL before */
locator = this->mrl + (sizeof("dvd:") - 1);
locator_orig = locator = strdup (this->mrl + (sizeof("dvd:") - 1));

View File

@ -1,7 +1,8 @@
diff -urp ../xine-lib-1.1.4.orig/src/xine-engine/load_plugins.c ./src/xine-engine/load_plugins.c
--- ../xine-lib-1.1.4.orig/src/xine-engine/load_plugins.c 2007-01-19 00:30:18.000000000 +0100
+++ ./src/xine-engine/load_plugins.c 2007-01-30 19:04:56.000000000 +0100
@@ -2366,9 +2366,19 @@ char *xine_get_file_extensions (xine_t *
Index: src/xine-engine/load_plugins.c
===================================================================
--- src/xine-engine/load_plugins.c.orig
+++ src/xine-engine/load_plugins.c
@@ -2401,9 +2401,19 @@ char *xine_get_file_extensions (xine_t *
plugin_node_t *node;
char *str;
int list_id, list_size;
@ -21,7 +22,7 @@ diff -urp ../xine-lib-1.1.4.orig/src/xine-engine/load_plugins.c ./src/xine-engin
/* calc length of output */
len = 0;
@@ -2382,7 +2392,8 @@ char *xine_get_file_extensions (xine_t *
@@ -2417,7 +2427,8 @@ char *xine_get_file_extensions (xine_t *
cls = (demux_class_t *)node->plugin_class;
@ -31,7 +32,7 @@ diff -urp ../xine-lib-1.1.4.orig/src/xine-engine/load_plugins.c ./src/xine-engin
len += strlen(exts) + 1;
}
}
@@ -2402,7 +2413,8 @@ char *xine_get_file_extensions (xine_t *
@@ -2437,7 +2448,8 @@ char *xine_get_file_extensions (xine_t *
cls = (demux_class_t *)node->plugin_class;

View File

@ -1,6 +1,7 @@
diff -urp ../xine-lib-1.1.2-orig/doc/README_xxmc.html ./doc/README_xxmc.html
--- ../xine-lib-1.1.2-orig/doc/README_xxmc.html 2006-08-11 16:22:08.000000000 +0200
+++ ./doc/README_xxmc.html 2006-08-11 16:22:42.000000000 +0200
Index: doc/README_xxmc.html
===================================================================
--- doc/README_xxmc.html.orig
+++ doc/README_xxmc.html
@@ -70,7 +70,7 @@ installing</h2>
Make sure you have the XvMC wrapper installed. The wrapper will try to
figure out at run-time what xvmc-hardware specific driver to load. If
@ -10,10 +11,11 @@ diff -urp ../xine-lib-1.1.2-orig/doc/README_xxmc.html ./doc/README_xxmc.html
and try to load the hardware-specific library mentioned in that file.
If you downloaded the XvMC wrapper from the unichrome site, the default
XvMCConfig will make the XvMC wrapper try to load the Nvidia XvMC
diff -urp ../xine-lib-1.1.2-orig/doc/faq/faq.sgml ./doc/faq/faq.sgml
--- ../xine-lib-1.1.2-orig/doc/faq/faq.sgml 2006-08-11 16:22:08.000000000 +0200
+++ ./doc/faq/faq.sgml 2006-08-11 16:24:58.000000000 +0200
@@ -394,12 +394,12 @@
Index: doc/faq/faq.sgml
===================================================================
--- doc/faq/faq.sgml.orig
+++ doc/faq/faq.sgml
@@ -455,12 +455,12 @@
<para>
If you want to have Xv support compiled in, make sure you either have
a shared Xv library on your system, e.g.

View File

@ -1,6 +1,8 @@
--- configure.ac 2007-06-27 18:29:50.000000000 +0200
+++ configure.ac 2007-06-27 18:13:42.000000000 +0200
@@ -1059,6 +1059,28 @@
Index: configure.ac
===================================================================
--- configure.ac.orig
+++ configure.ac
@@ -1070,6 +1070,28 @@ AC_SUBST([SDL_CFLAGS])
AC_SUBST([SDL_LIBS])
dnl ---------------------------------------------
@ -29,7 +31,7 @@
dnl check for Libstk
dnl ---------------------------------------------
@@ -2676,6 +2698,7 @@
@@ -2731,6 +2753,7 @@ src/libxineadec/Makefile
src/libxineadec/gsm610/Makefile
src/libxineadec/nosefart/Makefile
src/libreal/Makefile
@ -37,7 +39,7 @@
src/post/Makefile
src/post/planar/Makefile
src/post/goom/Makefile
@@ -2854,6 +2877,9 @@
@@ -2918,6 +2941,9 @@ echo ""
dnl audio decoders
echo " * audio decoder plugins:"
echo " - GSM 06.10 - linear PCM"
@ -47,9 +49,11 @@
if test "x$with_external_ffmpeg" = "xyes"; then
echo " - ffmpeg (external library):"
else
--- src/Makefile.am 2007-06-27 18:29:50.000000000 +0200
+++ src/Makefile.am 2007-06-27 17:33:56.000000000 +0200
@@ -25,6 +25,7 @@
Index: src/Makefile.am
===================================================================
--- src/Makefile.am.orig
+++ src/Makefile.am
@@ -25,6 +25,7 @@ SUBDIRS = \
libreal \
libfaad \
libmusepack \
@ -57,8 +61,10 @@
post \
combined \
vdr
--- src/mjpeg/Makefile.am 1970-01-01 01:00:00.000000000 +0100
+++ src/mjpeg/Makefile.am 2007-06-27 18:25:54.000000000 +0200
Index: src/mjpeg/Makefile.am
===================================================================
--- /dev/null
+++ src/mjpeg/Makefile.am
@@ -0,0 +1,9 @@
+include $(top_srcdir)/misc/Makefile.common
+
@ -69,24 +75,26 @@
+xineplug_decode_mjpeg_la_CFLAGS = $(VISIBILITY_FLAG)
+xineplug_decode_mjpeg_la_LDFLAGS = $(xineplug_ldflags)
+endif
--- src/mjpeg/xine_mjpeg_decoder.c 1970-01-01 01:00:00.000000000 +0100
+++ src/mjpeg/xine_mjpeg_decoder.c 2007-06-27 18:12:23.000000000 +0200
Index: src/mjpeg/xine_mjpeg_decoder.c
===================================================================
--- /dev/null
+++ src/mjpeg/xine_mjpeg_decoder.c
@@ -0,0 +1,388 @@
+/*
+/*
+ * Copyright (C) 2007 Marcus Meissner
+ *
+ *
+ * This file is part of xine, a free video player.
+ *
+ *
+ * xine is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ *
+ * xine is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
@ -212,7 +220,7 @@
+
+static void mjpeg_discontinuity (video_decoder_t *this_gen) {
+ mjpeg_decoder_t *this = (mjpeg_decoder_t *) this_gen;
+
+
+ this->bytes_in_buffer = 0;
+ this->pts = 0;
+}
@ -266,7 +274,7 @@
+ this->maxbytes_in_buffer *= 2;
+ this->buffer = newbuf;
+ }
+ xine_fast_memcpy (&this->buffer[this->bytes_in_buffer],
+ xine_fast_memcpy (&this->buffer[this->bytes_in_buffer],
+ buf->content, buf->size);
+ this->bytes_in_buffer += buf->size;
+
@ -341,7 +349,7 @@
+ uint8_t *y,*u,*v;
+ int i;
+ int x = jpeg_read_scanlines(&this->jd,&cursamprow,1);
+
+
+ if (x != 1) {
+ fprintf(stderr, "failed to read current scanline?\n");
+ break;
@ -365,10 +373,10 @@
+}
+
+static void mjpeg_dispose (video_decoder_t *this_gen) {
+ mjpeg_decoder_t *this = (mjpeg_decoder_t *) this_gen;
+ mjpeg_decoder_t *this = (mjpeg_decoder_t *) this_gen;
+
+ jpeg_destroy_decompress(&this->jd);
+ if (this->output_open) {
+ if (this->output_open) {
+ this->xstream->video_out->close (this->xstream->video_out, this->xstream);
+ this->output_open = 0;
+ }
@ -433,7 +441,7 @@
+static void *init_plugin (xine_t *xine, void *data) {
+
+ mjpeg_class_t *this;
+
+
+ this = (mjpeg_class_t *) xine_xmalloc (sizeof (mjpeg_class_t));
+
+ this->decoder_class.open_plugin = open_plugin;
@ -444,7 +452,7 @@
+ return this;
+}
+
+static uint32_t video_types[] = {
+static uint32_t video_types[] = {
+ BUF_VIDEO_JPEG,
+ BUF_VIDEO_MJPEG,
+ 0
@ -456,12 +464,14 @@
+};
+
+const plugin_info_t xine_plugin_info[] EXPORTED = {
+ /* type, API, "name", version, special_info, init_function */
+ /* type, API, "name", version, special_info, init_function */
+ { PLUGIN_VIDEO_DECODER, 18, "mjpeg", XINE_VERSION_CODE, &dec_info_video, init_plugin },
+ { PLUGIN_NONE, 0, "", 0, NULL, NULL }
+};
--- src/mjpeg/Makefile.in 2006-11-25 20:28:17.000000000 +0100
+++ src/mjpeg/Makefile.in 2007-06-28 13:29:11.000000000 +0200
Index: src/mjpeg/Makefile.in
===================================================================
--- /dev/null
+++ src/mjpeg/Makefile.in
@@ -0,0 +1,751 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
@ -921,7 +931,7 @@
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+xineplug_decode_mjpeg.la: $(xineplug_decode_mjpeg_la_OBJECTS) $(xineplug_decode_mjpeg_la_DEPENDENCIES)
+xineplug_decode_mjpeg.la: $(xineplug_decode_mjpeg_la_OBJECTS) $(xineplug_decode_mjpeg_la_DEPENDENCIES)
+ $(xineplug_decode_mjpeg_la_LINK) $(am_xineplug_decode_mjpeg_la_rpath) $(xineplug_decode_mjpeg_la_OBJECTS) $(xineplug_decode_mjpeg_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
@ -1214,9 +1224,11 @@
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
--- configure
Index: configure
===================================================================
--- configure.orig
+++ configure
@@ -53416,6 +53416,7 @@
@@ -53851,6 +53851,7 @@ echo ""
echo " * video decoder plugins:"
echo " - MPEG 1,2 - Amiga Bitplane"
echo " - Raw RGB - Raw YUV"
@ -1224,13 +1236,15 @@
if test "x$with_external_ffmpeg" = "xyes"; then
echo " - ffmpeg (external library):"
else
--- src/Makefile.in
Index: src/Makefile.in
===================================================================
--- src/Makefile.in.orig
+++ src/Makefile.in
@@ -546,6 +546,7 @@
@@ -399,6 +399,7 @@ SUBDIRS = \
libreal \
libfaad \
libmusepack \
+ mjpeg \
post \
combined \
vdr
combined

View File

@ -1,7 +1,8 @@
diff -ur ../xine-lib-1.1.1-orig/src/libw32dll/wine/ldt_keeper.c ./src/libw32dll/wine/ldt_keeper.c
--- ../xine-lib-1.1.1-orig/src/libw32dll/wine/ldt_keeper.c 2006-01-02 12:43:47.000000000 +0100
+++ ./src/libw32dll/wine/ldt_keeper.c 2006-01-02 12:43:51.000000000 +0100
@@ -79,6 +79,10 @@
Index: src/libw32dll/wine/ldt_keeper.c
===================================================================
--- src/libw32dll/wine/ldt_keeper.c.orig
+++ src/libw32dll/wine/ldt_keeper.c
@@ -77,6 +77,10 @@ int modify_ldt(int func, void *ptr, unsi
#ifdef __cplusplus
}
#endif
@ -10,5 +11,5 @@ diff -ur ../xine-lib-1.1.1-orig/src/libw32dll/wine/ldt_keeper.c ./src/libw32dll/
+#define modify_ldt_ldt_s user_desc
+#endif
#else
#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__)
#if defined(__NetBSD__) || defined(__FreeBSD_kernel__) || defined(__OpenBSD__)
#include <machine/segments.h>

View File

@ -1,3 +1,36 @@
-------------------------------------------------------------------
Tue Mar 25 19:26:50 CET 2008 - mhopf@suse.de
- Security fix for bnc#372877: integer overflows in malloc
CVE-2008-1482
- Added missing aalib-devel dependency.
-------------------------------------------------------------------
Wed Mar 19 16:42:18 CET 2008 - mhopf@suse.de
- Update to 1.1.11:
* Security fixes:
- Array Indexing Vulnerability in sdpplin_parse(). (CVE-2008-0073)
* Reworked the plugin directory naming so that external plugins don't have
to be rebuilt for every release. We now use a naming scheme based on the
API/ABI versioning, checking older directories - with this release, the
plugin directory name is 1.20, and if this gets bumped to 1.21 in a
future release, 1.20 will still be available for external plugins.
(Any directories not 1.* won't be looked in.)
* Made the version parsing much more reliable; it wasn't properly coping
with four-part version numbers. This affects any program whose build
scripts use xine-lib's automake macros.
* Fixed an off-by-one in the FLAC security fix patch. This breakage was
causing failure to play some files.
* Support 16-bit big-endian DTS audio.
* Improved frame snapshot API. (ABI extension.)
* Re-add support for # (stream parameter separator) in raw filenames,
without the bugs found in the original implementation.
(This is a convenience feature for users only. Front ends which rely on
it for functions like subtitle file detection must instead use file://
MRLs; if they don't, we consider them to be buggy.)
* Fixed long delay when closing stream on dual core systems [Bug #33]
-------------------------------------------------------------------
Mon Mar 10 13:28:58 CET 2008 - lnussel@suse.de

View File

@ -1,5 +1,5 @@
#
# spec file for package xine-lib (Version 1.1.10.1)
# spec file for package xine-lib (Version 1.1.11)
#
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
@ -28,14 +28,14 @@ Name: xine-lib
# 0: Build all except xine-internal 1: Build only xine-internal 2: Build all
# 1+2 need uncrippled source
%define BUILD_XINE %{?_with_internal:2}%{!?_with_internal:%build_xine_default}
BuildRequires: ImageMagick-devel SDL-devel arts-devel cdparanoia curl-devel esound-devel flac-devel giflib-devel glib2-devel gnome-common gnome-vfs2-devel gnutls-devel gtk2-devel imlib2-devel krb5-devel libcdio-devel libdrm-devel libmng-devel libsmbclient libsmbclient-devel libtheora-devel libvorbis-devel lirc readline-devel speex-devel update-desktop-files vcdimager-devel
BuildRequires: ImageMagick-devel SDL-devel aalib-devel arts-devel cdparanoia curl-devel esound-devel flac-devel giflib-devel glib2-devel gnome-common gnome-vfs2-devel gnutls-devel gtk2-devel imlib2-devel krb5-devel libcdio-devel libdrm-devel libmng-devel libsmbclient libsmbclient-devel libtheora-devel libvorbis-devel lirc readline-devel speex-devel update-desktop-files vcdimager-devel
%if %BUILD_XINE > 0
BuildRequires: mad-devel
%endif
Recommends: opensuse-codecs-installer
Version: 1.1.10.1
Release: 10
%define abiversion 1.1.10
Version: 1.1.11
Release: 2
%define abiversion 1.20
Summary: Video Player with Plug-Ins
Group: Productivity/Multimedia/Video/Players
License: GPL v2 or later; Public Domain, Freeware
@ -52,6 +52,7 @@ Source13: lcd.tar.bz2
Source99: precheckin_cripple_tarball.sh
# *** xine-lib: Bugfixes
Patch26: xine-lib-doc-fix-X11R6.diff
Patch30: xine-lib-CVE-2008-1482.diff
# *** Addons
Patch50: vdr-xine-lib-0.8.1.diff.bz2
Patch51: vdr-xine-SUSE.diff
@ -168,6 +169,7 @@ else
fi
cd xine-lib-%version
%patch26
%patch30 -p1
%patch50 -p1
%patch51 -p1
%patch52 -p1
@ -448,6 +450,33 @@ echo "/usr/share/xine/mad" >> files.internal
%endif
%changelog
* Tue Mar 25 2008 mhopf@suse.de
- Security fix for bnc#372877: integer overflows in malloc
CVE-2008-1482
- Added missing aalib-devel dependency.
* Wed Mar 19 2008 mhopf@suse.de
- Update to 1.1.11:
* Security fixes:
- Array Indexing Vulnerability in sdpplin_parse(). (CVE-2008-0073)
* Reworked the plugin directory naming so that external plugins don't have
to be rebuilt for every release. We now use a naming scheme based on the
API/ABI versioning, checking older directories - with this release, the
plugin directory name is 1.20, and if this gets bumped to 1.21 in a
future release, 1.20 will still be available for external plugins.
(Any directories not 1.* won't be looked in.)
* Made the version parsing much more reliable; it wasn't properly coping
with four-part version numbers. This affects any program whose build
scripts use xine-lib's automake macros.
* Fixed an off-by-one in the FLAC security fix patch. This breakage was
causing failure to play some files.
* Support 16-bit big-endian DTS audio.
* Improved frame snapshot API. (ABI extension.)
* Re-add support for # (stream parameter separator) in raw filenames,
without the bugs found in the original implementation.
(This is a convenience feature for users only. Front ends which rely on
it for functions like subtitle file detection must instead use file://
MRLs; if they don't, we consider them to be buggy.)
* Fixed long delay when closing stream on dual core systems [Bug #33]
* Mon Mar 10 2008 lnussel@suse.de
- get rid of nosrc so a debuginfo package get created (bnc#284030)
* Fri Feb 15 2008 lnussel@suse.de