Today's selected c++ reading:
Before any call to str() that uses the result as a C string,
the buffer must be null-terminated, typically with std::ends.
Found by mlarkin using MALLOC_OPTIONS=SU.
I leave it to the ports wizards to incorporate the patch.
--- OptionsParser.cc.orig Wed Aug 4 19:23:39 1999
+++ OptionsParser.cc Wed Jan 22 20:32:29 2020
@@ -17,8 +17,8 @@
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-#include <iostream.h>
-#include <strstream.h>
+#include <iostream>
+#include <strstream>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
@@ -27,6 +27,8 @@
#include "Info.h"
#include "Usage.h"
+using namespace std;
+
// methods for class Options
Options::Options()
@@ -138,6 +140,7 @@
{
// found seperator
// set filename in options class
+ filename << std::ends;
o->cfg_filenames[o->nr_cfg_files] = filename.str();
// increase the nr_cfg_files counter
@@ -154,6 +157,7 @@
{
// found end of string
// set filename in options class
+ filename << std::ends;
o->cfg_filenames[o->nr_cfg_files] = filename.str();
// increase the nr_cfg_files counter