summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDarren Salt <linux@youmustbejoking.demon.co.uk>2006-06-22 23:47:16 +0000
committerDarren Salt <linux@youmustbejoking.demon.co.uk>2006-06-22 23:47:16 +0000
commit52e8f3c3d01ea5ba0d8827cfcc845072974e7904 (patch)
treefbd5f7fc9ce837259fb4510e0e6799f4f073f861
parent4c05246c20f41d1e19ade1e21325c5c3815d8cf8 (diff)
downloadxine-lib-52e8f3c3d01ea5ba0d8827cfcc845072974e7904.tar.gz
xine-lib-52e8f3c3d01ea5ba0d8827cfcc845072974e7904.tar.bz2
Fix two identical instances of either null-dereference or use-after-free.
Also (hopefully) avoid memleak on allocation failure. CVS patchset: 8071 CVS date: 2006/06/22 23:47:16
-rw-r--r--src/xine-engine/alphablend.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/src/xine-engine/alphablend.c b/src/xine-engine/alphablend.c
index b38042369..6f224ca30 100644
--- a/src/xine-engine/alphablend.c
+++ b/src/xine-engine/alphablend.c
@@ -1124,14 +1124,13 @@ static uint8_t *(*blend_yuv_grow_extra_data(alphablend_t *extra_data, int osd_wi
if (extra_data->buffer_size < needed_buffer_size) {
free(extra_data->buffer);
- extra_data->buffer = xine_xmalloc(needed_buffer_size);
-
- if (!extra_data->buffer) {
+ header = xine_xmalloc(needed_buffer_size);
+ if (!header) {
extra_data->buffer_size = 0;
return 0;
}
-
extra_data->buffer_size = needed_buffer_size;
+ extra_data->buffer = header;
header->max_width = 0;
}
@@ -1535,14 +1534,13 @@ static uint8_t *(*blend_yuy2_grow_extra_data(alphablend_t *extra_data, int osd_w
if (extra_data->buffer_size < needed_buffer_size) {
free(extra_data->buffer);
- extra_data->buffer = xine_xmalloc(needed_buffer_size);
-
- if (!extra_data->buffer) {
+ header = xine_xmalloc(needed_buffer_size);
+ if (!header) {
extra_data->buffer_size = 0;
return 0;
}
-
extra_data->buffer_size = needed_buffer_size;
+ extra_data->buffer = header;
header->max_width = 0;
}