Commit c6ca641a authored by unknown's avatar unknown

Fix two small problems in the source, potentially causing user-visible

bugs.


ndb/include/util/UtilBuffer.hpp:
  Fix accessing memory after free(), if called with source and destination
  pointer the same (which should not really happen...).
  Fixes a problem in ndb_restore.
ndb/src/common/util/SimpleProperties.cpp:
  Fix typo in check of maxValue.
parent 311abf10
...@@ -73,11 +73,15 @@ public: ...@@ -73,11 +73,15 @@ public:
} }
int assign(const void * d, size_t l) { int assign(const void * d, size_t l) {
if (data) free(data); /* Free the old data only after copying, in case d==data. */
void *old_data= data;
data = NULL; data = NULL;
len = 0; len = 0;
alloc_size = 0; alloc_size = 0;
return append(d, l); int ret= append(d, l);
if (old_data)
free(old_data);
return ret;
} }
void clear() { void clear() {
......
...@@ -245,7 +245,7 @@ SimpleProperties::pack(Writer & it, const void * __src, ...@@ -245,7 +245,7 @@ SimpleProperties::pack(Writer & it, const void * __src,
const char * src_len = _src + _map[i].Length_Offset; const char * src_len = _src + _map[i].Length_Offset;
Uint32 len = *((Uint32*)src_len); Uint32 len = *((Uint32*)src_len);
if(!ignoreMinMax){ if(!ignoreMinMax){
if(len == _map[i].maxValue) if(len > _map[i].maxValue)
return ValueTooHigh; return ValueTooHigh;
} }
ok = it.add(_map[i].Key, src, len); ok = it.add(_map[i].Key, src, len);
...@@ -254,7 +254,7 @@ SimpleProperties::pack(Writer & it, const void * __src, ...@@ -254,7 +254,7 @@ SimpleProperties::pack(Writer & it, const void * __src,
case SimpleProperties::StringValue: case SimpleProperties::StringValue:
if(!ignoreMinMax){ if(!ignoreMinMax){
size_t len = strlen(src); size_t len = strlen(src);
if(len == _map[i].maxValue) if(len > _map[i].maxValue)
return ValueTooHigh; return ValueTooHigh;
} }
ok = it.add(_map[i].Key, src); ok = it.add(_map[i].Key, src);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment