Skip to content
Snippets Groups Projects

E3-1197: Fix possible memory issues

Merged Lucas Magalhães requested to merge fix_valgrind into master
1 file
+ 3
1
Compare changes
  • Side-by-side
  • Inline
  • 640e5721
    This was reported by cppcheck over require's code:
    require-ess/src/runScript.c:128:12: error: Common realloc mistake: 'line_raw' nulled but not freed upon failure [memleakOnRealloc]
          if ((line_raw = realloc(line_raw, line_raw_size *= 2)) == NULL)
               ^
    
    Unfortunately realloc can return null, in that case if we use something
    like
    line_raw = realloc(line_raw, size);
    The memory pointed by line_raw is lost.
@@ -49,6 +49,7 @@ int runScript(const char *filename, const char *args) {
MAC_HANDLE *mac = NULL;
FILE *file = NULL;
char *line_raw = NULL;
char *aux_pointer = NULL;
char *line_exp = NULL;
long line_raw_size = 256;
long line_exp_size = line_raw_size;
@@ -125,8 +126,9 @@ int runScript(const char *filename, const char *args) {
while (line_raw[(len = (long)strlen(line_raw)) - 1] != '\n' &&
!feof(file)) {
if (runScriptDebug) printf("runScript partial line: \"%s\"\n", line_raw);
if ((line_raw = realloc(line_raw, line_raw_size *= 2)) == NULL)
if ((aux_pointer = realloc(line_raw, line_raw_size *= 2)) == NULL)
goto error;
line_raw = aux_pointer;
if (fgets(line_raw + len, line_raw_size - len, file) == NULL) break;
}
while (len > 0 && isspace((unsigned char)line_raw[len - 1]))
Loading