aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Carlier <devnexen@gmail.com>2016-07-28 08:56:22 +0100
committerLoic Blot <loic.blot@unix-experience.fr>2016-08-10 16:59:32 +0200
commit48b3bb980d4a026d32739acc1982f16e3c303c5b (patch)
tree1685d44bb69642771a9840171bcab93a68f6da49
parent1be3894e6f283b0538a725bc438922c7d7ec294a (diff)
downloadminetest-48b3bb980d4a026d32739acc1982f16e3c303c5b.tar.gz
minetest-48b3bb980d4a026d32739acc1982f16e3c303c5b.tar.bz2
minetest-48b3bb980d4a026d32739acc1982f16e3c303c5b.zip
couple of memory leaks fixes.
-rw-r--r--src/script/cpp_api/s_security.cpp18
-rw-r--r--src/sound_openal.cpp1
-rw-r--r--src/unittest/test_map_settings_manager.cpp4
-rw-r--r--src/util/areastore.cpp1
-rw-r--r--src/util/srp.cpp2
5 files changed, 23 insertions, 3 deletions
diff --git a/src/script/cpp_api/s_security.cpp b/src/script/cpp_api/s_security.cpp
index e117a4811..0e64c4c61 100644
--- a/src/script/cpp_api/s_security.cpp
+++ b/src/script/cpp_api/s_security.cpp
@@ -285,6 +285,10 @@ bool ScriptApiSecurity::safeLoadFile(lua_State *L, const char *path)
if (c == LUA_SIGNATURE[0]) {
lua_pushliteral(L, "Bytecode prohibited when mod security is enabled.");
+ std::fclose(fp);
+ if (path) {
+ delete [] chunk_name;
+ }
return false;
}
@@ -295,7 +299,15 @@ bool ScriptApiSecurity::safeLoadFile(lua_State *L, const char *path)
size_t size = std::ftell(fp) - start;
char *code = new char[size];
ret = std::fseek(fp, start, SEEK_SET);
- CHECK_FILE_ERR(ret, fp);
+ if (ret) {
+ lua_pushfstring(L, "%s: %s", path, strerror(errno));
+ std::fclose(fp);
+ delete [] code;
+ if (path) {
+ delete [] chunk_name;
+ }
+ return false;
+ }
size_t num_read = std::fread(code, 1, size, fp);
if (path) {
@@ -303,6 +315,10 @@ bool ScriptApiSecurity::safeLoadFile(lua_State *L, const char *path)
}
if (num_read != size) {
lua_pushliteral(L, "Error reading file to load.");
+ delete [] code;
+ if (path) {
+ delete [] chunk_name;
+ }
return false;
}
diff --git a/src/sound_openal.cpp b/src/sound_openal.cpp
index e2b6d937a..1832a0c77 100644
--- a/src/sound_openal.cpp
+++ b/src/sound_openal.cpp
@@ -144,6 +144,7 @@ SoundBuffer *load_opened_ogg_file(OggVorbis_File *oggFile,
ov_clear(oggFile);
infostream << "Audio: Error decoding "
<< filename_for_logging << std::endl;
+ delete snd;
return NULL;
}
diff --git a/src/unittest/test_map_settings_manager.cpp b/src/unittest/test_map_settings_manager.cpp
index 9292bf87c..4f5ac80f2 100644
--- a/src/unittest/test_map_settings_manager.cpp
+++ b/src/unittest/test_map_settings_manager.cpp
@@ -75,8 +75,10 @@ std::string read_file_to_string(const std::string &filepath)
fseek(f, 0, SEEK_END);
long filesize = ftell(f);
- if (filesize == -1)
+ if (filesize == -1) {
+ fclose(f);
return "";
+ }
rewind(f);
buf.resize(filesize);
diff --git a/src/util/areastore.cpp b/src/util/areastore.cpp
index 58f08a8c2..cef67da2c 100644
--- a/src/util/areastore.cpp
+++ b/src/util/areastore.cpp
@@ -95,6 +95,7 @@ void AreaStore::deserialize(std::istream &is)
is.read(data, data_len);
a.data = std::string(data, data_len);
insertArea(&a);
+ delete [] data;
}
}
diff --git a/src/util/srp.cpp b/src/util/srp.cpp
index 0d3c938a3..77c1816e8 100644
--- a/src/util/srp.cpp
+++ b/src/util/srp.cpp
@@ -542,7 +542,7 @@ static SRP_Result fill_buff()
if (!fp) return SRP_ERR;
- if (fread(g_rand_buff, sizeof(g_rand_buff), 1, fp) != 1) return SRP_ERR;
+ if (fread(g_rand_buff, sizeof(g_rand_buff), 1, fp) != 1) { fclose(fp); return SRP_ERR; }
if (fclose(fp)) return SRP_ERR;
#endif
return SRP_OK;