Snort mailing list archives

sfbpf_realloc() question


From: Bill Parker <wp02855 () gmail com>
Date: Tue, 22 Sep 2015 14:33:27 -0700

Hello All,

    In reviewing code in snort-2.9.x, where calls to sfbpf_realloc() are
made, as below, if realloc() fails, it returns a NULL value, which will
clobber what YY_CURRENT_BUFFER_LVALUE->yy_ch_buf points to (which would be
NULL), but according to the C9x standard, when realloc() returns NULL, the
original buffer is unchaged.

Shouldn't a temporary variable be used to keep track of the above memory
location, in the event sfbpf_realloc() fails?  (unless YY_FATAL_ERROR
causes DAQ to terminate?):

{
                /* Extend the array by 50%, plus the number we really need.
*/
                yy_size_t new_size = (yy_n_chars) + number_to_move +
((yy_n_chars) >> 1);
                YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *)
sfbpf_realloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
                if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
                        YY_FATAL_ERROR( "out of dynamic memory in
yy_get_next_buffer()" );
        }

        (yy_n_chars) += number_to_move;

Bill
------------------------------------------------------------------------------
_______________________________________________
Snort-devel mailing list
Snort-devel () lists sourceforge net
https://lists.sourceforge.net/lists/listinfo/snort-devel
Archive:
http://sourceforge.net/mailarchive/forum.php?forum_name=snort-devel

Please visit http://blog.snort.org for the latest news about Snort!

Current thread: