Fix memory leaks

* Delete/free as appropriate

   Most cases involve not freeing memory after encountering error or
   unexpected situation (identified via cppcheck static analysis)

Change-Id: I90ba2fca518b00d2dfa9ec1ddbcebe1920a34b7c
Reviewed-on: https://review.haiku-os.org/c/haiku/+/1038
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
This commit is contained in:
Rob Gill 2019-02-13 15:10:15 +10:00 committed by waddlesplash
parent f0ba8f6aca
commit 40ee778c63
8 changed files with 20 additions and 4 deletions

View File

@ -735,6 +735,7 @@ main(int argc, const char *const *argv)
const char *destination = files[fileCount];
files[fileCount] = NULL;
copy_files(files, fileCount, destination, parameters);
delete[] files;
return 0;
}

View File

@ -369,6 +369,7 @@ main(int argc, const char* const* argv)
execvp("zip", zipArgs);
fprintf(stderr, "Error: Failed exec*() zip: %s\n", strerror(errno));
delete[] rootNodes;
return 1;
}

View File

@ -130,6 +130,7 @@ main(int argc, char **argv)
if (read(fd, buffer, stat.st_size) < 0) {
fprintf(stderr, "Could not read from fortune file: %s\n",
strerror(errno));
free(buffer);
return -1;
}
@ -148,6 +149,7 @@ main(int argc, char **argv)
if (!count) {
printf("Out of cookies...\n");
free(buffer);
return 0;
}
@ -168,5 +170,6 @@ main(int argc, char **argv)
}
puts(buffer + start);
free(buffer)
return 0;
}

View File

@ -672,5 +672,7 @@ main(int argc, const char *const *argv)
close(fd);
}
delete[] files;
return 0;
}

View File

@ -309,5 +309,7 @@ main(int argc, const char *const *argv)
overwrite);
}
delete[] inputFiles;
return 0;
}

View File

@ -85,7 +85,7 @@ check_mime_type(const char *type)
if (type) {
if (!BMimeType::IsValid(type)) {
fprintf(stderr, "\"%s\" is no valid MIME type.\n", type);
exit(1);
}
}
@ -104,7 +104,7 @@ main(int argc, const char *const *argv)
const char *type = NULL;
const char *signature = NULL;
const char *preferredApp = NULL;
// parse the arguments
for (int argi = 1; argi < argc; ) {
const char *arg = argv[argi++];
@ -141,7 +141,7 @@ main(int argc, const char *const *argv)
if (fileCount == 0) {
fprintf(stderr, "Error: No file specified.\n");
print_usage_and_exit(true);
}
}
// check for valid MIME types
check_mime_type(preferredApp);
@ -237,5 +237,7 @@ main(int argc, const char *const *argv)
}
}
delete[] files;
return 0;
}

View File

@ -452,8 +452,10 @@ Services::_LaunchService(struct service& service, int socket)
}
args[service.arguments.size()] = NULL;
if (execv(service.arguments[0].c_str(), (char* const*)args) < 0)
if (execv(service.arguments[0].c_str(), (char* const*)args) < 0) {
free(args);
exit(1);
}
// we'll never trespass here
} else {

View File

@ -1122,6 +1122,7 @@ private:
TraceFilter* filter = new(&fFilters[fFilterCount++]) NotTraceFilter;
if ((filter->fSubFilters.first = _ParseExpression()) != NULL)
return filter;
delete(filter);
return NULL;
} else if (strcmp(token, "and") == 0) {
TraceFilter* filter = new(&fFilters[fFilterCount++]) AndTraceFilter;
@ -1129,6 +1130,7 @@ private:
&& (filter->fSubFilters.second = _ParseExpression()) != NULL) {
return filter;
}
delete(filter);
return NULL;
} else if (strcmp(token, "or") == 0) {
TraceFilter* filter = new(&fFilters[fFilterCount++]) OrTraceFilter;
@ -1136,6 +1138,7 @@ private:
&& (filter->fSubFilters.second = _ParseExpression()) != NULL) {
return filter;
}
delete(filter);
return NULL;
} else if (strcmp(token, "thread") == 0) {
const char* arg = _NextToken();