The branch, master has been updated
via e63f9a319f589e08ce611fc165fe82449c9bf633 (commit)
from 4bf435eb5495196183d4df0f74d6dc76d5dae955 (commit)
- Log -----------------------------------------------------------------
commit e63f9a319f589e08ce611fc165fe82449c9bf633
Author: Christian Herdtweck <christian.herdtweck@xxxxxxxxxxxxx>
Date: Fri Oct 21 17:17:43 2016 +0200
Raise error if length of exported symbols exceeds boost::serialization limit
-----------------------------------------------------------------------
Summary of changes:
codegen/main.cpp | 20 ++++++++++++++++++--
1 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/codegen/main.cpp b/codegen/main.cpp
index 105dc24..7271b22 100644
--- a/codegen/main.cpp
+++ b/codegen/main.cpp
@@ -30,6 +30,7 @@
#include <stdexcept>
#include <string>
#include <boost/lexical_cast.hpp>
+#include <boost/serialization/extended_type_info.hpp>
#include "config.h"
@@ -142,6 +143,15 @@ struct parse_error : public std::runtime_error
{}
};
+struct error_name_too_long : public std::runtime_error
+{
+ error_name_too_long(const std::string &name)
+ : std::runtime_error("symbol name '" + name + "' too long for
serialization ("
+ +
boost::lexical_cast<std::string>(name.length()) + ">"
+ +
boost::lexical_cast<std::string>(BOOST_SERIALIZATION_MAX_KEY_SIZE-1) + ")")
+ {}
+};
+
//! get type by id
/*!
\return type name or empty string on error
@@ -224,11 +234,17 @@ struct t2n_procedure
std::string ret_classname() const
{
- return name+mangled+"_res";
+ std::string result = name+mangled+"_res";
+ if (result.length() >= BOOST_SERIALIZATION_MAX_KEY_SIZE)
+ throw error_name_too_long(result);
+ return result;
}
std::string cmd_classname() const
{
- return name+mangled+"_cmd";
+ std::string result = name+mangled+"_cmd";
+ if (result.length() >= BOOST_SERIALIZATION_MAX_KEY_SIZE)
+ throw error_name_too_long(result);
+ return result;
}
bool hasReturn() const {return !ret_type.isVoid();}
};
hooks/post-receive
--
C++ inter-process communication library
--
libt2n-git - see http://www.intra2net.com/en/developer/libt2n for details.
To unsubscribe send a mail to libt2n-git+unsubscribe@xxxxxxxxxxxxxxxxxxxxxxx
|