From: <wsf...@us...> - 2008-12-21 00:29:52
|
Revision: 10994 http://swig.svn.sourceforge.net/swig/?rev=10994&view=rev Author: wsfulton Date: 2008-12-21 00:29:48 +0000 (Sun, 21 Dec 2008) Log Message: ----------- Apply patch #2440046 which fixes possible seg faults for member and global variable char arrays when the strings are larger than the string array size. Modified Paths: -------------- trunk/CHANGES.current trunk/Lib/swig.swg Modified: trunk/CHANGES.current =================================================================== --- trunk/CHANGES.current 2008-12-20 23:59:03 UTC (rev 10993) +++ trunk/CHANGES.current 2008-12-21 00:29:48 UTC (rev 10994) @@ -1,6 +1,10 @@ Version 1.3.37 (in progress) ============================ +2008-12-21: wsfulton + Apply patch #2440046 which fixes possible seg faults for member and global + variable char arrays when the strings are larger than the string array size. + 2008-12-20: wsfulton The ccache compiler cache has been adapted to work with SWIG and named ccache-swig. It now works with C/C++ compilers as well as SWIG Modified: trunk/Lib/swig.swg =================================================================== --- trunk/Lib/swig.swg 2008-12-20 23:59:03 UTC (rev 10993) +++ trunk/Lib/swig.swg 2008-12-21 00:29:48 UTC (rev 10994) @@ -423,13 +423,21 @@ /* Character array handling */ %typemap(memberin) char [ANY] { - if ($input) strncpy((char *)$1, (const char *)$input, $1_dim0); - else $1[0] = 0; + if($input) { + strncpy((char*)$1, (const char *)$input, $1_dim0-1); + $1[$1_dim0-1] = 0; + } else { + $1[0] = 0; + } } %typemap(globalin) char [ANY] { - if ($input) strncpy((char *)$1, (const char *)$input, $1_dim0); - else $1[0] = 0; + if($input) { + strncpy((char*)$1, (const char *)$input, $1_dim0-1); + $1[$1_dim0-1] = 0; + } else { + $1[0] = 0; + } } %typemap(memberin) char [] { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |