Browse Source

Add range safety check to EllipticCurveKey.

Adam Ierymenko 12 years ago
parent
commit
9979474f1e
1 changed files with 5 additions and 19 deletions
  1. 5 19
      node/EllipticCurveKey.hpp

+ 5 - 19
node/EllipticCurveKey.hpp

@@ -30,6 +30,7 @@
 
 #include <string>
 #include <algorithm>
+#include <stdexcept>
 #include <string.h>
 #include "Utils.hpp"
 
@@ -69,39 +70,24 @@ public:
 	}
 
 	EllipticCurveKey(const void *data,unsigned int len)
-		throw()
+		throw(std::out_of_range)
 	{
 		set(data,len);
 	}
 
 	EllipticCurveKey(const std::string &data)
-		throw()
+		throw(std::out_of_range)
 	{
 		set(data.data(),data.length());
 	}
 
-	EllipticCurveKey(const EllipticCurveKey &k)
-		throw()
-	{
-		_bytes = k._bytes;
-		memcpy(_key,k._key,_bytes);
-	}
-
-	inline EllipticCurveKey &operator=(const EllipticCurveKey &k)
-		throw()
-	{
-		_bytes = k._bytes;
-		memcpy(_key,k._key,_bytes);
-		return *this;
-	}
-
 	inline void set(const void *data,unsigned int len)
-		throw()
+		throw(std::out_of_range)
 	{
 		if (len <= ZT_EC_MAX_BYTES) {
 			_bytes = len;
 			memcpy(_key,data,len);
-		} else _bytes = 0;
+		} else throw std::out_of_range("key too large");
 	}
 
 	inline const unsigned char *data() const throw() { return _key; }