From: <pau...@us...> - 2009-08-22 10:16:31
|
Revision: 6128 http://octave.svn.sourceforge.net/octave/?rev=6128&view=rev Author: paulsundvall Date: 2009-08-22 10:16:23 +0000 (Sat, 22 Aug 2009) Log Message: ----------- Fixed two memory leaks with one missing delete[], one delete[] instead of delete. Added error check on the user requesting negative receive length. Fixed copy/paste mistake(?) in error message. Modified Paths: -------------- trunk/octave-forge/main/sockets/src/sockets.cc Modified: trunk/octave-forge/main/sockets/src/sockets.cc =================================================================== --- trunk/octave-forge/main/sockets/src/sockets.cc 2009-08-22 07:50:34 UTC (rev 6127) +++ trunk/octave-forge/main/sockets/src/sockets.cc 2009-08-22 10:16:23 UTC (rev 6128) @@ -534,7 +534,7 @@ for ( int i = 0 ; i < d1.length() ; i++ ) buf[i] = (unsigned char)d1(i); retval = ::send( s->get_sock_fd(), (const char*)buf, data.byte_size(), 0 ); - delete buf; + delete[] buf; } else { @@ -577,11 +577,14 @@ } else { - error("connect: expecting a octave_socket or integer"); + error("recv: expecting a octave_socket or integer"); return octave_value(-1); } long len = args(1).int_value(); + if(len<0) + error("recv: negative receive length requested"); + unsigned char* buf = new unsigned char[ len ]; #ifndef __WIN32__ retval = ::recv( s->get_sock_fd(), buf, len, flags ); @@ -594,6 +597,8 @@ for ( int i = 0 ; i < retval ; i++ ) return_buf(0,i) = buf[i]; + delete[] buf; + octave_value in_buf(return_buf); octave_value out_buf; OCTAVE_TYPE_CONV( in_buf, out_buf, uint8 ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |