From bef22ce53428befb105b342fed2d8d76213793e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20=27Flameeyes=27=20Petten=C3=B2?= Date: Sat, 14 Apr 2007 16:19:09 +0200 Subject: Define XINE_PACKED also in attributes.h for frontends. --- src/xine-utils/attributes.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/xine-utils') diff --git a/src/xine-utils/attributes.h b/src/xine-utils/attributes.h index 27c6fc5bc..649c1aa43 100644 --- a/src/xine-utils/attributes.h +++ b/src/xine-utils/attributes.h @@ -69,4 +69,10 @@ # define XINE_FORMAT_PRINTF_ARG(fmt) #endif +#ifdef SUPPORT_ATTRIBUTE_PACKED +# define XINE_PACKED __attribute__((packed)) +#else +# define XINE_PACKED +#endif + #endif /* ATTRIBUTE_H_ */ -- cgit v1.2.3 From b10d5cccee5d2945b1924a732a9b7d9d79d91b0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20=27Flameeyes=27=20Petten=C3=B2?= Date: Sat, 14 Apr 2007 17:12:05 +0200 Subject: Add a xine_xcalloc function to wrap around calloc(), to improve security from now on. --- src/xine-utils/utils.c | 21 +++++++++++++++++++++ src/xine-utils/xineutils.h | 6 ++++++ 2 files changed, 27 insertions(+) (limited to 'src/xine-utils') diff --git a/src/xine-utils/utils.c b/src/xine-utils/utils.c index fa0c11dbe..63c2e2f09 100644 --- a/src/xine-utils/utils.c +++ b/src/xine-utils/utils.c @@ -256,6 +256,27 @@ void *xine_xmalloc(size_t size) { return ptr; } +/** + * @brief Wrapper around calloc() function. + * @param nmemb Number of elements to allocate + * @param size Size of each element to allocate + * + * This is a simple wrapper around calloc(), the only thing + * it does more than calloc() is outputting an error if + * the calloc fails (returning NULL). + */ +void *xine_xcalloc(size_t nmemb, size_t size) { + void *ptr; + + if((ptr = calloc(nmemb, size)) == NULL) { + fprintf(stderr, "%s: calloc() failed: %s.\n", + __XINE_FUNCTION__, strerror(errno)); + return NULL; + } + + return ptr; +} + void *xine_xmalloc_aligned(size_t alignment, size_t size, void **base) { char *ptr; diff --git a/src/xine-utils/xineutils.h b/src/xine-utils/xineutils.h index 03c5f689a..20c3cb2dc 100644 --- a/src/xine-utils/xineutils.h +++ b/src/xine-utils/xineutils.h @@ -630,6 +630,12 @@ void *xine_xmalloc(size_t size) XINE_PROTECTED; void *xine_xmalloc(size_t size) __attribute__ ((__malloc__)) XINE_PROTECTED; #endif +#if !defined(__GNUC__) || __GNUC__ < 3 +void *xine_xcalloc(size_t nmemb, size_t size) XINE_PROTECTED; +#else +void *xine_xcalloc(size_t nmemb, size_t size) __attribute__ ((__malloc__)) XINE_PROTECTED; +#endif + /* * Same as above, but memory is aligned to 'alignement'. * **base is used to return pointer to un-aligned memory, use -- cgit v1.2.3 From d8728d7219ceb91d9bddda4064d91f83558b44b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20=27Flameeyes=27=20Petten=C3=B2?= Date: Sat, 14 Apr 2007 17:25:54 +0200 Subject: Check for __malloc__ attribute during configure stage, avoid conditional in xineutils.h for it, instead use XINE_MALLOC. --- src/xine-utils/attributes.h | 6 ++++++ src/xine-utils/xineutils.h | 12 ++---------- 2 files changed, 8 insertions(+), 10 deletions(-) (limited to 'src/xine-utils') diff --git a/src/xine-utils/attributes.h b/src/xine-utils/attributes.h index 649c1aa43..e257a48dd 100644 --- a/src/xine-utils/attributes.h +++ b/src/xine-utils/attributes.h @@ -75,4 +75,10 @@ # define XINE_PACKED #endif +#ifdef SUPPORT_ATTRIBUTE_MALLOC +# define XINE_MALLOC __attributes__((__malloc__)) +#else +# define XINE_MALLOC +#endif + #endif /* ATTRIBUTE_H_ */ diff --git a/src/xine-utils/xineutils.h b/src/xine-utils/xineutils.h index 20c3cb2dc..0be29ff63 100644 --- a/src/xine-utils/xineutils.h +++ b/src/xine-utils/xineutils.h @@ -624,17 +624,9 @@ void xine_profiler_print_results (void) XINE_PROTECTED; * Allocate and clean memory size_t 'size', then return the pointer * to the allocated memory. */ -#if !defined(__GNUC__) || __GNUC__ < 3 -void *xine_xmalloc(size_t size) XINE_PROTECTED; -#else -void *xine_xmalloc(size_t size) __attribute__ ((__malloc__)) XINE_PROTECTED; -#endif +void *xine_xmalloc(size_t size) XINE_MALLOC XINE_PROTECTED; -#if !defined(__GNUC__) || __GNUC__ < 3 -void *xine_xcalloc(size_t nmemb, size_t size) XINE_PROTECTED; -#else -void *xine_xcalloc(size_t nmemb, size_t size) __attribute__ ((__malloc__)) XINE_PROTECTED; -#endif +void *xine_xcalloc(size_t nmemb, size_t size) XINE_MALLOC XINE_PROTECTED; /* * Same as above, but memory is aligned to 'alignement'. -- cgit v1.2.3 From 5f701693bfa7357ec08114c03963f6f5e9ef1836 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20=27Flameeyes=27=20Petten=C3=B2?= Date: Sat, 14 Apr 2007 17:33:05 +0200 Subject: Fix typo injected at savetime. --- src/xine-utils/attributes.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/xine-utils') diff --git a/src/xine-utils/attributes.h b/src/xine-utils/attributes.h index e257a48dd..80bcadd7f 100644 --- a/src/xine-utils/attributes.h +++ b/src/xine-utils/attributes.h @@ -76,7 +76,7 @@ #endif #ifdef SUPPORT_ATTRIBUTE_MALLOC -# define XINE_MALLOC __attributes__((__malloc__)) +# define XINE_MALLOC __attribute__((__malloc__)) #else # define XINE_MALLOC #endif -- cgit v1.2.3 From dc36f8d045cf4f723c44766f44c92e1810e37f4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20=27Flameeyes=27=20Petten=C3=B2?= Date: Sat, 14 Apr 2007 17:52:39 +0200 Subject: Mark string arrays as arrays of constant pointers, and do the same for memcpy structures. When array of constant pointers are used for register enum configurations, this creates more warnings because of pointer mismatches; I'd consider casting them, but not yet. In the memcpy_method array, mark the parts that are constant at build time as const so to try reducing the overhead. --- src/xine-utils/memcpy.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/xine-utils') diff --git a/src/xine-utils/memcpy.c b/src/xine-utils/memcpy.c index 539f4c8dd..67645081e 100644 --- a/src/xine-utils/memcpy.c +++ b/src/xine-utils/memcpy.c @@ -383,8 +383,8 @@ static void *linux_kernel_memcpy(void *to, const void *from, size_t len) { #endif /* ARCH_X86 */ static struct { - char *name; - void *(* function)(void *to, const void *from, size_t len); + char *const name; + void *(*const function)(void *to, const void *from, size_t len); uint64_t time; /* This type could be used for non-MSC build too! */ @@ -461,7 +461,7 @@ void xine_probe_fast_memcpy(xine_t *xine) char *buf1, *buf2; int i, j, best; int config_flags = -1; - static const char *memcpy_methods[] = { + static const char *const memcpy_methods[] = { "probe", "libc", #if (defined(ARCH_X86) || defined(ARCH_X86_64)) && !defined(_MSC_VER) "kernel", "mmx", "mmxext", "sse", -- cgit v1.2.3