Text   |  XML   |  ReML   |   Visible Warnings:

Null Pointer Dereference  at ostream-file.c:751

No properties have been set. | edit properties
Jump to warning location ↓ warning details...
Show Events | Options

io_stream_copy_backwards

(/home/sate/Testcases/c/cve/dovecot-1.2.0/src/lib/ostream-file.c)expand/collapse
Show more  
 701  static off_t io_stream_copy_backwards(struct ostream_private *outstream,
 702                                        struct istream *instream, uoff_t in_size)
 703  {
 704          struct file_ostream *foutstream = (struct file_ostream *)outstream;
 705          uoff_t in_start_offset, in_offset, in_limit, out_offset;
 706          const unsigned char *data;
 707          size_t buffer_size, size, read_size;
 708          ssize_t ret;
 709   
 710          i_assert(IS_STREAM_EMPTY(foutstream));
 711   
 712          /* figure out optimal buffer size */
 713          buffer_size = instream->real_stream->buffer_size;
 714          if (buffer_size == 0 || buffer_size > foutstream->buffer_size) {
 715                  if (foutstream->optimal_block_size > foutstream->buffer_size) {
 716                          o_stream_grow_buffer(foutstream,
 717                                               foutstream->optimal_block_size -
 718                                               foutstream->buffer_size);
 719                  }
 720   
 721                  buffer_size = foutstream->buffer_size;
 722          }
 723   
 724          in_start_offset = instream->v_offset;
 725          in_offset = in_limit = in_size;
 726          out_offset = outstream->ostream.offset + (in_offset - in_start_offset);
 727   
 728          while (in_offset > in_start_offset) {
 729                  if (in_offset - in_start_offset <= buffer_size)
 730                          read_size = in_offset - in_start_offset;
 731                  else 
 732                          read_size = buffer_size;
 733                  in_offset -= read_size;
 734                  out_offset -= read_size;
 735   
 736                  for (;;) {
 737                          i_assert(in_offset <= in_limit);
 738   
 739                          i_stream_seek(instream, in_offset);
 740                          read_size = in_limit - in_offset;
 741   
 742                          (void)i_stream_read_data(instream, &data, &size,
 743[+]                                                  read_size-1);
 744                          if (size >= read_size) {
 745                                  size = read_size;
 746                                  if (instream->mmaped) {
 747                                          /* we'll have to write it through 
 748                                             buffer or the file gets corrupted */
 749                                          i_assert(size <=
 750                                                   foutstream->buffer_size);
 751                                          memcpy(foutstream->buffer, data, size);
Show more  




Change Warning 7122.24563 : Null Pointer Dereference

Priority:
State:
Finding:
Owner:
Note: