kuldeep gupta created THRIFT-2018:
-------------------------------------

             Summary: Resource Leak in TBufferTransports in cpp library of 
thrift 0.9.0
                 Key: THRIFT-2018
                 URL: https://issues.apache.org/jira/browse/THRIFT-2018
             Project: Thrift
          Issue Type: Bug
          Components: C++ - Library
    Affects Versions: 0.9
         Environment: thrift 0.9.0 on Linux 2.6.32-220.el6.x86_64
            Reporter: kuldeep gupta


In file lib/cpp/src/thrift/transport/TBufferTransports.cpp

void TMemoryBuffer::ensureCanWrite(uint32_t len) {
 333   // Check available space
 334   uint32_t avail = available_write();
 335   if (len <= avail) {
 336     return;
 337   }
 338 
 339   if (!owner_) {
 340     throw TTransportException("Insufficient space in external 
MemoryBuffer");
 341   }
 342 
 343   // Grow the buffer as necessary.
 344   uint32_t new_size = bufferSize_;
 345   while (len > avail) {
 346     new_size = new_size > 0 ? new_size * 2 : 1;
 347     avail = available_write() + (new_size - bufferSize_);
 348   }
 349 
 350   // Allocate into a new pointer so we don't bork ours if it fails.
 351   void* new_buffer = std::realloc(buffer_, new_size);
 352   if (new_buffer == NULL) {
 353     throw std::bad_alloc();
 354   }
 355   bufferSize_ = new_size;
 356 
 357   ptrdiff_t offset = (uint8_t*)new_buffer - buffer_;
 358   buffer_ += offset;
 359   rBase_ += offset;
 360   rBound_ += offset;
 361   wBase_ += offset;
 362   wBound_ = buffer_ + bufferSize_;
 363 }

In the Above code at line number 351.
1. Storage is returned from allocation function "realloc(void *, size_t)". 
2. Assigning: "new_buffer" = storage returned from "realloc(this->buffer_, 
new_size)". 
3. At line number 363
Variable "new_buffer" going out of scope leaks the storage it points to.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to