diff --git a/core/src/dap_file_utils.c b/core/src/dap_file_utils.c
index 4f5641f113fa8b30808734261d081f65b6a02cbb..9dac6fd60edcff3b08743a3975480c20f7eda05a 100755
--- a/core/src/dap_file_utils.c
+++ b/core/src/dap_file_utils.c
@@ -775,12 +775,12 @@ char *dap_file_get_contents2(const char *a_filename, size_t *length)
 #endif
         return log_it(L_ERROR, "Can't open file \"%s\", error %d: %s", a_filename, l_err, dap_strerror(l_err)), NULL;
     }
-    off_t l_size = fseeko(f, 0, SEEK_END) ? ftello(f) : -1;
+    off_t l_size = !fseeko(f, 0, SEEK_END) ? ftello(f) : -1;
     char *l_buffer = NULL;
     if (l_size <= 0) {
         log_it(L_ERROR, "Can't get file %s size or file is empty", a_filename);
         l_err = -3;
-    } else if (!( l_buffer = DAP_NEW_Z_SIZE(char, l_size)) ) {
+    } else if (!( l_buffer = DAP_NEW_Z_SIZE(char, l_size + 1)) ) {
         log_it(L_CRITICAL, "%s", c_error_memory_alloc);
         l_err = -4;
     } else {