search for: swfdec_bytes_check

Displaying 15 results from an estimated 15 matches for "swfdec_bytes_check".

2007 Mar 28
0
3 commits - libswfdec/swfdec_bits.c libswfdec/swfdec_bits.h libswfdec/swfdec_sprite.c libswfdec/swfdec_tag.c
...+32,25 @@ #include "swfdec_rect.h" +#define SWFDEC_BITS_CHECK(b,n) G_STMT_START { \ + if (swfdec_bits_left(b) < (n)) { \ + SWFDEC_ERROR ("reading past end of buffer"); \ + b->ptr = b->end; \ + b->idx = 0; \ + return 0; \ + } \ +}G_STMT_END +#define SWFDEC_BYTES_CHECK(b,n) G_STMT_START { \ + g_assert (b->end >= b->ptr); \ + g_assert (b->idx == 0); \ + if ((unsigned long) (b->end - b->ptr) < n) { \ + SWFDEC_ERROR ("reading past end of buffer"); \ + b->ptr = b->end; \ + b->idx = 0; \ + return 0; \ + } \ +} G_...
2007 Jul 11
0
libswfdec/swfdec_bits.c
...don't access memory unaligned (fixes #11492) Hopefully fixes it... diff --git a/libswfdec/swfdec_bits.c b/libswfdec/swfdec_bits.c index c8a5062..8ec6936 100644 --- a/libswfdec/swfdec_bits.c +++ b/libswfdec/swfdec_bits.c @@ -307,11 +307,9 @@ swfdec_bits_get_float (SwfdecBits * b) SWFDEC_BYTES_CHECK (b, 4); - conv.i = *((gint32 *) b->ptr); + conv.i = (b->ptr[3] << 24) | (b->ptr[2] << 16) | (b->ptr[1] << 8) | b->ptr[0]; b->ptr += 4; - conv.i = GINT32_FROM_LE (conv.i); - return conv.f; } @@ -323,40 +321,30 @@ swfdec_bits_get_float (SwfdecBits *...
2007 Jul 11
0
Branch 'as' - 3 commits - libswfdec/swfdec_bits.c
...don't access memory unaligned (fixes #11492) Hopefully fixes it... diff --git a/libswfdec/swfdec_bits.c b/libswfdec/swfdec_bits.c index c8a5062..8ec6936 100644 --- a/libswfdec/swfdec_bits.c +++ b/libswfdec/swfdec_bits.c @@ -307,11 +307,9 @@ swfdec_bits_get_float (SwfdecBits * b) SWFDEC_BYTES_CHECK (b, 4); - conv.i = *((gint32 *) b->ptr); + conv.i = (b->ptr[3] << 24) | (b->ptr[2] << 16) | (b->ptr[1] << 8) | b->ptr[0]; b->ptr += 4; - conv.i = GINT32_FROM_LE (conv.i); - return conv.f; } @@ -323,40 +321,30 @@ swfdec_bits_get_float (SwfdecBits *...
2007 Mar 29
0
libswfdec-gtk/swfdec_playback_alsa.c libswfdec/swfdec_audio_event.h libswfdec/swfdec_audio_flv.h libswfdec/swfdec_audio_stream.h libswfdec/swfdec_bits.c libswfdec/swfdec_bits.h libswfdec/swfdec_buffer.c libswfdec/swfdec_buffer.h libswfdec/swfdec_cache.c
...cBits * b, un } int -swfdec_bits_getsbits (SwfdecBits * b, unsigned int n) +swfdec_bits_getsbits (SwfdecBits * b, guint n) { unsigned long r = 0; @@ -198,7 +198,7 @@ swfdec_bits_getsbits (SwfdecBits * b, un return r; } -unsigned int +guint swfdec_bits_peek_u8 (SwfdecBits * b) { SWFDEC_BYTES_CHECK (b, 1); @@ -206,7 +206,7 @@ swfdec_bits_peek_u8 (SwfdecBits * b) return *b->ptr; } -unsigned int +guint swfdec_bits_get_u8 (SwfdecBits * b) { SWFDEC_BYTES_CHECK (b, 1); @@ -214,10 +214,10 @@ swfdec_bits_get_u8 (SwfdecBits * b) return *b->ptr++; } -unsigned int +guint swfdec_...
2007 Mar 29
0
Branch 'as' - 9 commits - libswfdec-gtk/swfdec_playback_alsa.c libswfdec/js libswfdec/Makefile.am libswfdec/swfdec_as_context.c libswfdec/swfdec_as_context.h libswfdec/swfdec_as_frame.c libswfdec/swfdec_as_frame.h libswfdec/swfdec_as_function.c
...cBits * b, un } int -swfdec_bits_getsbits (SwfdecBits * b, unsigned int n) +swfdec_bits_getsbits (SwfdecBits * b, guint n) { unsigned long r = 0; @@ -198,7 +198,7 @@ swfdec_bits_getsbits (SwfdecBits * b, un return r; } -unsigned int +guint swfdec_bits_peek_u8 (SwfdecBits * b) { SWFDEC_BYTES_CHECK (b, 1); @@ -206,7 +206,7 @@ swfdec_bits_peek_u8 (SwfdecBits * b) return *b->ptr; } -unsigned int +guint swfdec_bits_get_u8 (SwfdecBits * b) { SWFDEC_BYTES_CHECK (b, 1); @@ -214,10 +214,10 @@ swfdec_bits_get_u8 (SwfdecBits * b) return *b->ptr++; } -unsigned int +guint swfdec_...
2007 Mar 20
0
2 commits - libswfdec/swfdec_bits.c libswfdec/swfdec_net_stream.c
...it a/libswfdec/swfdec_bits.c b/libswfdec/swfdec_bits.c index e6a38ed..a90ba96 100644 --- a/libswfdec/swfdec_bits.c +++ b/libswfdec/swfdec_bits.c @@ -336,6 +336,7 @@ swfdec_bits_get_bdouble (SwfdecBits * b) double d; #if G_BYTE_ORDER == G_LITTLE_ENDIAN guint64 tmp; + gpointer p; #endif SWFDEC_BYTES_CHECK (b, 8); @@ -345,7 +346,8 @@ swfdec_bits_get_bdouble (SwfdecBits * b) #elif G_BYTE_ORDER == G_LITTLE_ENDIAN tmp = *((guint64 *) b->ptr); tmp = GUINT64_FROM_BE (tmp); - d = *((double *) &tmp); + p = &tmp; + d = *((double *) p); #endif b->ptr += 8; diff-tree 759af095e5718...
2007 Apr 26
0
4 commits - libswfdec/swfdec_bits.c libswfdec/swfdec_bits.h NEWS README
...guint -swfdec_bits_peekbits (SwfdecBits * b, guint n) +swfdec_bits_peekbits (const SwfdecBits * b, guint n) { SwfdecBits tmp = *b; @@ -201,9 +201,12 @@ swfdec_bits_getsbits (SwfdecBits * b, gu } guint -swfdec_bits_peek_u8 (SwfdecBits * b) +swfdec_bits_peek_u8 (const SwfdecBits * b) { - SWFDEC_BYTES_CHECK (b, 1); + g_assert (b->idx == 0); + g_assert (b->ptr <= b->end); + if (b->ptr == b->end) + return 0; return *b->ptr; } diff --git a/libswfdec/swfdec_bits.h b/libswfdec/swfdec_bits.h index 9e14628..a86e705 100644 --- a/libswfdec/swfdec_bits.h +++ b/libswfdec/swfdec_b...
2007 Mar 20
0
9 commits - configure.ac libswfdec/swfdec_bits.c libswfdec/swfdec_debug.c libswfdec/swfdec_js.c libswfdec/swfdec_script.c libswfdec/swfdec_sound.c
...- slight speed improvement for SWFDEC_BITS_CHECK_BYTES macro diff --git a/libswfdec/swfdec_bits.c b/libswfdec/swfdec_bits.c index 860d2c4..7327413 100644 --- a/libswfdec/swfdec_bits.c +++ b/libswfdec/swfdec_bits.c @@ -96,8 +96,16 @@ swfdec_bits_left (SwfdecBits *b) } \ }G_STMT_END #define SWFDEC_BYTES_CHECK(b,n) G_STMT_START { \ + gulong __bytes; \ swfdec_bits_syncbits (b); \ - SWFDEC_BITS_CHECK (b, 8 * n); \ + __bytes = b->end - b->ptr; \ + if (!(__bytes > n || \ + (__bytes == n && b->idx == 0))) { \ + SWFDEC_ERROR ("reading past end of buffer"); \ +...
2007 Apr 17
0
15 commits - libswfdec/jpeg libswfdec/swfdec_bits.c libswfdec/swfdec_edittext.c libswfdec/swfdec_font.c libswfdec/swfdec_image.c libswfdec/swfdec_root_sprite.c libswfdec/swfdec_script.c libswfdec/swfdec_shape.c libswfdec/swfdec_sprite.c
...number of bytes to read + * + * Reads the next @len bytes into a string and validates it as UTF-8. + * + * Returns: a new string or %NULL on error + **/ char * swfdec_bits_get_string_length (SwfdecBits * bits, guint len) { char *ret; + if (len == 0) + return g_strdup (""); SWFDEC_BYTES_CHECK (bits, len); ret = g_strndup ((char *) bits->ptr, len);
2007 Apr 17
0
Branch 'as' - 17 commits - libswfdec/jpeg libswfdec/swfdec_bits.c libswfdec/swfdec_font.c libswfdec/swfdec_image.c libswfdec/swfdec_root_sprite.c libswfdec/swfdec_script.c libswfdec/swfdec_shape.c libswfdec/swfdec_sound.c libswfdec/swfdec_sprite.c
...number of bytes to read + * + * Reads the next @len bytes into a string and validates it as UTF-8. + * + * Returns: a new string or %NULL on error + **/ char * swfdec_bits_get_string_length (SwfdecBits * bits, guint len) { char *ret; + if (len == 0) + return g_strdup (""); SWFDEC_BYTES_CHECK (bits, len); ret = g_strndup ((char *) bits->ptr, len);
2007 Dec 10
0
5 commits - libswfdec/jpeg libswfdec/swfdec_as_interpret.c libswfdec/swfdec_bits.c libswfdec/swfdec_cached.c libswfdec/swfdec_codec_adpcm.c libswfdec/swfdec_codec_audio.c libswfdec/swfdec_flash_security.c libswfdec/swfdec_image.c
...at gnome.org> Date: Mon Dec 10 22:36:08 2007 +0100 fix unaligned reads diff --git a/libswfdec/swfdec_bits.c b/libswfdec/swfdec_bits.c index edc79a8..5298012 100644 --- a/libswfdec/swfdec_bits.c +++ b/libswfdec/swfdec_bits.c @@ -359,9 +359,9 @@ swfdec_bits_get_bdouble (SwfdecBits * b) SWFDEC_BYTES_CHECK (b, 8); #if G_BYTE_ORDER == G_BIG_ENDIAN - d = *((double *) b->ptr); + memcpy (&d, b->ptr, 8); #elif G_BYTE_ORDER == G_LITTLE_ENDIAN - tmp = *((guint64 *) b->ptr); + memcpy (&tmp, b->ptr, 8); tmp = GUINT64_FROM_BE (tmp); p = &tmp; d = *((double *) p); commit...
2007 Jan 22
0
Branch 'interpreter' - 3 commits - libswfdec/swfdec_bits.c libswfdec/swfdec_swf_decoder.c test/Makefile.am test/swfedit.c test/swfedit_file.c test/swfedit_file.h test/swfedit_tag.c test/swfedit_tag.h test/swfedit_token.c test/swfedit_token.h
...ength; + } else { + memset (bits, 0, sizeof (SwfdecBits)); + } } /** @@ -567,7 +578,7 @@ swfdec_bits_get_buffer (SwfdecBits *bits { SwfdecBuffer *buffer; - g_return_val_if_fail (len > 0 || len == -1, NULL); + g_return_val_if_fail (len >= -1, NULL); if (len > 0) { SWFDEC_BYTES_CHECK (bits, (unsigned int) len); @@ -575,9 +586,9 @@ swfdec_bits_get_buffer (SwfdecBits *bits swfdec_bits_syncbits (bits); len = bits->end - bits->ptr; g_assert (len >= 0); - if (len == 0) - return NULL; } + if (len == 0) + return NULL; if (bits->buffer) {...
2007 Jun 06
0
Branch 'as' - 13 commits - libswfdec/swfdec_as_context.c libswfdec/swfdec_as_context.h libswfdec/swfdec_as_frame.c libswfdec/swfdec_as_frame.h libswfdec/swfdec_as_interpret.c libswfdec/swfdec_as_object.c libswfdec/swfdec_as_object.h
...har * -swfdec_bits_get_string (SwfdecBits * bits) -{ - const char *s = swfdec_bits_skip_string (bits); - - return g_strdup (s); -} - -const char * +static const char * swfdec_bits_skip_string (SwfdecBits *bits) { char *s; const char *end; guint len; - swfdec_bits_syncbits (bits); + SWFDEC_BYTES_CHECK (bits, 1); end = memchr (bits->ptr, 0, bits->end - bits->ptr); if (end == NULL) { SWFDEC_ERROR ("could not parse string"); @@ -495,15 +487,54 @@ swfdec_bits_skip_string (SwfdecBits *bit len = end - (const char *) bits->ptr; s = (char *) bits->ptr; bits-&...
2007 Feb 13
0
9 commits - libswfdec/js libswfdec/swfdec_bits.c libswfdec/swfdec_bits.h libswfdec/swfdec_codec_screen.c libswfdec/swfdec_image.c libswfdec/swfdec_script.c test/Makefile.am test/swfdec_out.c test/swfdec_out.h test/swfedit.c test/swfedit_file.c
...z = { 0, }; + SwfdecBuffer *buffer; + int result; + + g_return_val_if_fail (bits != NULL, NULL); + g_return_val_if_fail (compressed >= -1, NULL); + g_return_val_if_fail (decompressed > 0 || decompressed == -1, NULL); + + /* prepare the bits structure */ + if (compressed > 0) { + SWFDEC_BYTES_CHECK (bits, (unsigned int) compressed); + } else { + swfdec_bits_syncbits (bits); + compressed = bits->end - bits->ptr; + g_assert (compressed >= 0); + } + if (compressed == 0) + return NULL; + + z.zalloc = swfdec_bits_zalloc; + z.zfree = swfdec_bits_zfree; + z.opaque = NULL;...
2007 Feb 06
0
109 commits - configure.ac libswfdec/js libswfdec/Makefile.am libswfdec/swfdec_bits.c libswfdec/swfdec_bits.h libswfdec/swfdec_buffer.c libswfdec/swfdec_button_movie.c libswfdec/swfdec_codec_screen.c libswfdec/swfdec_color.c libswfdec/swfdec_color.h
...ength; + } else { + memset (bits, 0, sizeof (SwfdecBits)); + } } /** @@ -567,7 +578,7 @@ swfdec_bits_get_buffer (SwfdecBits *bits { SwfdecBuffer *buffer; - g_return_val_if_fail (len > 0 || len == -1, NULL); + g_return_val_if_fail (len >= -1, NULL); if (len > 0) { SWFDEC_BYTES_CHECK (bits, (unsigned int) len); @@ -575,9 +586,9 @@ swfdec_bits_get_buffer (SwfdecBits *bits swfdec_bits_syncbits (bits); len = bits->end - bits->ptr; g_assert (len >= 0); - if (len == 0) - return NULL; } + if (len == 0) + return NULL; if (bits->buffer) {...