From 17bc3a5338224d6fca1b7ddcfcfde0ac4a809ea4 Mon Sep 17 00:00:00 2001 From: jen140 Date: Tue, 19 Jan 2016 16:53:07 +0000 Subject: [PATCH 01/14] fixed a few memory leaks in backend.c --- src/backend/backend.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/backend/backend.c b/src/backend/backend.c index fed9c95..b7b93fd 100644 --- a/src/backend/backend.c +++ b/src/backend/backend.c @@ -89,13 +89,13 @@ fs_backend *fs_backend_init(const char *db_name, int flags) ret->md = fs_metadata_open(db_name); if (!ret->md) { fs_error(LOG_CRIT, "cannot read metadata file for kb %s", db_name); - + free(ret); return NULL; } if (!fs_metadata_get_string(ret->md, FS_MD_NAME, NULL)) { fs_error(LOG_ERR, "no value for KB name in metadata, does KB exist?"); - + free(ret); return NULL; } @@ -103,20 +103,20 @@ fs_backend *fs_backend_init(const char *db_name, int flags) if (strcmp(hashfunc, FS_HASH)) { fs_error(LOG_ERR, "stored hash function does not match server's hash function"); fs_error(LOG_ERR, "rebuild code with correct function or replace store"); - + free(ret); return NULL; } const char *store_type = fs_metadata_get_string(ret->md, FS_MD_STORE, "semi-native"); if (strcmp(store_type, "native")) { fs_error(LOG_ERR, "tried to open %s store with native backend", store_type); - + free(ret); return NULL; } if (strcmp(fs_metadata_get_string(ret->md, FS_MD_NAME, "-no-match-"), db_name)) { fs_error(LOG_CRIT, "metadata and opened KB name don't match %s / %s", db_name, fs_metadata_get_string(ret->md, FS_MD_NAME, "-no-match-")); - + free(ret); return NULL; } @@ -124,13 +124,13 @@ fs_backend *fs_backend_init(const char *db_name, int flags) const int version = fs_metadata_get_int(ret->md, FS_MD_VERSION, 0); if (version == -1) { fs_error(LOG_CRIT, "cannot find number of segments in KB %s", db_name); - + free(ret); return NULL; } if (version > FS_CURRENT_TABLE_VERSION || version < FS_EARLIEST_TABLE_VERSION) { fs_error(LOG_ERR, "wrong table metadata version in KB %s", db_name); - + free(ret); return NULL; } From 993d368687af88ddb23afd5e23186ae4eaf5e511 Mon Sep 17 00:00:00 2001 From: jen140 Date: Tue, 19 Jan 2016 16:57:53 +0000 Subject: [PATCH 02/14] fixed memory leaks in tree.c --- src/backend/tree.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/backend/tree.c b/src/backend/tree.c index dd73d2c..257860a 100644 --- a/src/backend/tree.c +++ b/src/backend/tree.c @@ -192,6 +192,7 @@ fs_tree *fs_tree_open_filename(fs_backend *be, const char *name, const char *fil int fd = open(filename, FS_O_NOATIME | O_RDWR | flags, FS_FILE_MODE); if (fd == -1) { fs_error(LOG_ERR, "failed to open tree file '%s': %s", filename, strerror(errno)); + free(t); return NULL; } t->filename = (char *)filename; @@ -214,13 +215,13 @@ fs_tree *fs_tree_open_filename(fs_backend *be, const char *name, const char *fil if (header.id != TREE_ID) { fs_error(LOG_ERR, "'%s' does not appear to be a valid treefile", filename); close(fd); - + free(t); return NULL; } t->bc = fs_chain_open_filename(header.chainfile, flags); if (!t->bc) { fs_error(LOG_CRIT, "failed to open chain file '%s'", header.chainfile); - + free(t); return NULL; } From 0d36f43a2531b87bddec9cf346831fb582d0c739 Mon Sep 17 00:00:00 2001 From: jen140 Date: Tue, 19 Jan 2016 16:59:02 +0000 Subject: [PATCH 03/14] fixed memory leaks in tlist.c --- src/backend/tlist.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/backend/tlist.c b/src/backend/tlist.c index acb8bf4..e4897c5 100644 --- a/src/backend/tlist.c +++ b/src/backend/tlist.c @@ -130,7 +130,7 @@ fs_tlist *fs_tlist_open_filename(const char *filename, int flags) if (length == HEADER && header.id != TLIST_ID) { fs_error(LOG_ERR, "ā€œ%sā€ does not appear to be a tlist", filename); close(l->fd); - + free(l); return NULL; } l->offset = header.length; @@ -141,7 +141,7 @@ fs_tlist *fs_tlist_open_filename(const char *filename, int flags) if ((flags & (O_WRONLY | O_RDWR)) && flock(l->fd, LOCK_EX) == -1) { fs_error(LOG_ERR, "failed to open list: %s, cannot get lock: %s", filename, strerror(errno)); close(l->fd); - + free(l); return NULL; } write_header(l); @@ -150,7 +150,7 @@ fs_tlist *fs_tlist_open_filename(const char *filename, int flags) if (l->fd == -1) { fs_error(LOG_CRIT, "failed to open list %s: %s", filename, strerror(errno)); - + free(l); return NULL; } From 5f5b26b5f0d4094057259ade6d7d21bed0845042 Mon Sep 17 00:00:00 2001 From: jen140 Date: Tue, 19 Jan 2016 17:00:01 +0000 Subject: [PATCH 04/14] fixed memory leaks in tbchain.c --- src/backend/tbchain.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/backend/tbchain.c b/src/backend/tbchain.c index ecbb468..8c7a443 100644 --- a/src/backend/tbchain.c +++ b/src/backend/tbchain.c @@ -165,6 +165,7 @@ fs_tbchain *fs_tbchain_open_filename(const char *fname, int flags) bc->fd = open(fname, FS_O_NOATIME | flags, FS_FILE_MODE); if (bc->fd == -1) { fs_error(LOG_CRIT, "failed to open chain %s: %s", fname, strerror(errno)); + free(bc); return NULL; } bc->filename = g_strdup(fname); @@ -172,16 +173,19 @@ fs_tbchain *fs_tbchain_open_filename(const char *fname, int flags) if (sizeof(*header) != 512) { fs_error(LOG_CRIT, "tbchain header size is %zd, not 512 bytes", sizeof(header)); + free(bc); return NULL; } if (sizeof(fs_tblock) != FS_TBLOCK_SIZE) { fs_error(LOG_CRIT, "tblock size is %zd, not %d bytes", sizeof(fs_tblock), FS_TBLOCK_SIZE); + free(bc); return NULL; } int init_reqd = 0; if (bc->flags & O_TRUNC && ftruncate(bc->fd, sizeof(*header))) { fs_error(LOG_CRIT, "ftruncate failed on %s: %s", fname, strerror(errno)); + free(bc); return NULL; } @@ -192,6 +196,7 @@ fs_tbchain *fs_tbchain_open_filename(const char *fname, int flags) if (header == MAP_FAILED || header == NULL) { munmap(header, sizeof(*header)); fs_error(LOG_CRIT, "header mmap failed for %s: %s", bc->filename, strerror(errno)); + free(bc); return NULL; } From de48cfd2bc097cd57b0183d3e4c37beb9c31301e Mon Sep 17 00:00:00 2001 From: jen140 Date: Tue, 19 Jan 2016 17:00:31 +0000 Subject: [PATCH 05/14] fixed memory leaks in rhash.c --- src/backend/rhash.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/rhash.c b/src/backend/rhash.c index 2ccf3d1..2956e6b 100644 --- a/src/backend/rhash.c +++ b/src/backend/rhash.c @@ -169,7 +169,7 @@ fs_rhash *fs_rhash_open_filename(const char *filename, int flags) rh->flags = flags; if (rh->fd == -1) { fs_error(LOG_ERR, "cannot open rhash file '%s': %s", filename, strerror(errno)); - + free(rh); return NULL; } rh->z_buffer_size = 1024; From a733019d671691aca80e0bacd6c75c8e30a02797 Mon Sep 17 00:00:00 2001 From: jen140 Date: Tue, 19 Jan 2016 17:01:07 +0000 Subject: [PATCH 06/14] fixed memory leaks in ptable.c --- src/backend/ptable.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/backend/ptable.c b/src/backend/ptable.c index 58381a8..724118b 100644 --- a/src/backend/ptable.c +++ b/src/backend/ptable.c @@ -134,11 +134,13 @@ fs_ptable *fs_ptable_open_filename(const char *fname, int flags) if (sizeof(struct ptable_header) != 512) { fs_error(LOG_CRIT, "ptable header size not 512 bytes"); + free(pt); return NULL; } pt->fd = open(fname, FS_O_NOATIME | flags, FS_FILE_MODE); if (pt->fd == -1) { fs_error(LOG_CRIT, "failed to open ptable %s: %s", fname, strerror(errno)); + free(pt); return NULL; } pt->filename = g_strdup(fname); From 429083b3f6190452bae37cca2a2eea08496dd3a7 Mon Sep 17 00:00:00 2001 From: jen140 Date: Tue, 19 Jan 2016 17:02:54 +0000 Subject: [PATCH 07/14] fixed memory leaks in mhash.c --- src/backend/mhash.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/mhash.c b/src/backend/mhash.c index 4264cd7..d5403b8 100644 --- a/src/backend/mhash.c +++ b/src/backend/mhash.c @@ -100,7 +100,7 @@ fs_mhash *fs_mhash_open_filename(const char *filename, int flags) mh->flags = flags; if (mh->fd == -1) { fs_error(LOG_ERR, "cannot open mhash file '%s': %s", filename, strerror(errno)); - + free(mh); return NULL; } mh->filename = g_strdup(filename); From 9d4ccb9b5921f282ab16be802b656889d5a5b3a6 Mon Sep 17 00:00:00 2001 From: jen140 Date: Tue, 19 Jan 2016 17:03:47 +0000 Subject: [PATCH 08/14] fixed memory leaks in metadata.c --- src/backend/metadata.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/backend/metadata.c b/src/backend/metadata.c index 76f8859..6d9007e 100644 --- a/src/backend/metadata.c +++ b/src/backend/metadata.c @@ -77,14 +77,14 @@ fs_metadata *fs_metadata_open(const char *kb) if ((fd = open(m->uri + 7, FS_O_NOATIME | O_CREAT, FS_FILE_MODE)) == -1) { fs_error(LOG_CRIT, "failed to touch metadata file %s: %s", m->uri, strerror(errno)); - + free(m); return NULL; } close(fd); m->rw = raptor_new_world(); if (!m->rw) { fs_error(LOG_CRIT, "failed to initialise raptor"); - + free(m); return NULL; } raptor_parser *rdf_parser = raptor_new_parser(m->rw, "turtle"); From d767453a94a6167ef6aa8008b7ab902d59cf3040 Mon Sep 17 00:00:00 2001 From: jen140 Date: Tue, 19 Jan 2016 17:04:37 +0000 Subject: [PATCH 09/14] fixed memory leaks in list.c --- src/backend/list.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/backend/list.c b/src/backend/list.c index 6c4420c..427285b 100644 --- a/src/backend/list.c +++ b/src/backend/list.c @@ -85,23 +85,23 @@ fs_list *fs_list_open_filename(const char *filename, size_t width, int flags) l->fd = open(filename, FS_O_NOATIME | flags, FS_FILE_MODE); if (l->fd == -1) { fs_error(LOG_ERR, "failed to open list file '%s': %s", l->filename, strerror(errno)); - + free(l); return NULL; } if ((flags & (O_WRONLY | O_RDWR)) && flock(l->fd, LOCK_EX) == -1) { fs_error(LOG_ERR, "failed to open list: %s, cannot get lock: %s", filename, strerror(errno)); - + free(l); return NULL; } off_t end = lseek(l->fd, 0, SEEK_END); if (end == -1) { fs_error(LOG_CRIT, "failed to open list: %s, cannot seek to end", filename); - + free(l); return NULL; } if (end % width != 0) { fs_error(LOG_CRIT, "failed to open list: %s, length not multiple of data size", filename); - + free(l); return NULL; } l->offset = end / width; @@ -111,7 +111,7 @@ fs_list *fs_list_open_filename(const char *filename, size_t width, int flags) if (l->fd == -1) { fs_error(LOG_CRIT, "failed to open list %s: %s", filename, strerror(errno)); - + free(l); return NULL; } From 943deeac1513ad7953649d14ef2e1641d8d59166 Mon Sep 17 00:00:00 2001 From: jen140 Date: Tue, 19 Jan 2016 17:05:17 +0000 Subject: [PATCH 10/14] fixed memory leaks in chain.c --- src/backend/chain.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/backend/chain.c b/src/backend/chain.c index 0028ece..bbb0867 100644 --- a/src/backend/chain.c +++ b/src/backend/chain.c @@ -103,7 +103,7 @@ fs_chain *fs_chain_open_filename(const char *fname, int flags) bc->fd = open(fname, FS_O_NOATIME | flags, FS_FILE_MODE); if (bc->fd == -1) { fs_error(LOG_CRIT, "failed to open chain %s: %s", fname, strerror(errno)); - + free(bc); return NULL; } bc->filename = g_strdup(fname); @@ -117,7 +117,7 @@ fs_chain *fs_chain_open_filename(const char *fname, int flags) } if (header.id != CHAIN_ID) { fs_error(LOG_CRIT, "%s does not look like a chain file", bc->filename); - + free(bc); return NULL; } if (map_bc(bc, header.length, header.size)) { From a3e2c2814606c5f5344d42a5914346d2a81ce325 Mon Sep 17 00:00:00 2001 From: jen140 Date: Tue, 19 Jan 2016 17:12:05 +0000 Subject: [PATCH 11/14] fixed a memory leak in libstemmer.c --- src/libs/stemmer/libstemmer/libstemmer.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/libs/stemmer/libstemmer/libstemmer.c b/src/libs/stemmer/libstemmer/libstemmer.c index 5c3852a..838952a 100644 --- a/src/libs/stemmer/libstemmer/libstemmer.c +++ b/src/libs/stemmer/libstemmer/libstemmer.c @@ -40,7 +40,10 @@ sb_stemmer_new(const char * algorithm, const char * charenc) (struct sb_stemmer *) malloc(sizeof(struct sb_stemmer)); if (stemmer == NULL) return NULL; enc = sb_getenc(charenc); - if (enc == ENC_UNKNOWN) return NULL; + if (enc == ENC_UNKNOWN){ + free(stemmer); + return NULL; + } for (module = modules; module->name != 0; module++) { if (strcmp(module->name, algorithm) == 0 && module->enc == enc) break; From 2ed09a4bcee79d43fe9cab497beb145bdb224ce4 Mon Sep 17 00:00:00 2001 From: jen140 Date: Tue, 19 Jan 2016 17:15:54 +0000 Subject: [PATCH 12/14] fixed a memory leak in results.c --- src/frontend/results.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/frontend/results.c b/src/frontend/results.c index eaf61a4..e411d5b 100644 --- a/src/frontend/results.c +++ b/src/frontend/results.c @@ -3169,7 +3169,7 @@ int fs_sort_column(fs_query *q, fs_binding *b, int col, int **sorted) if (!sort) { /* this shouldn't happen, but just incase */ fs_error(LOG_ERR, "cannot get sortable string for %016llx", rid); - + free(sortable); return 1; } sortable[row].str = sort; From 76bc16a7991299512bde4bed8d8dfae85c62f29e Mon Sep 17 00:00:00 2001 From: jen140 Date: Tue, 19 Jan 2016 17:16:52 +0000 Subject: [PATCH 13/14] fixed a memory leak in umac.c --- src/common/umac.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/umac.c b/src/common/umac.c index 1c82230..c6d1dd1 100644 --- a/src/common/umac.c +++ b/src/common/umac.c @@ -2095,7 +2095,7 @@ static int umac_verify(void) } printf("Done.\n"); umac_delete(ctx); - + free(data_ptr); return return_value; } From 2596f01d9e487fb981cea2da12a21092591bfb41 Mon Sep 17 00:00:00 2001 From: jen140 Date: Tue, 19 Jan 2016 17:17:37 +0000 Subject: [PATCH 14/14] fixed a memory leak in libstemmer_utf8.c --- src/libs/stemmer/libstemmer/libstemmer_utf8.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/libs/stemmer/libstemmer/libstemmer_utf8.c b/src/libs/stemmer/libstemmer/libstemmer_utf8.c index 793a081..a4dcce3 100644 --- a/src/libs/stemmer/libstemmer/libstemmer_utf8.c +++ b/src/libs/stemmer/libstemmer/libstemmer_utf8.c @@ -45,7 +45,10 @@ sb_stemmer_new(const char * algorithm, const char * charenc) for (module = modules; module->name != 0; module++) { if (strcmp(module->name, algorithm) == 0 && module->enc == enc) break; } - if (module->name == NULL) return NULL; + if (module->name == NULL){ + free(stemmer); + return NULL; + } stemmer->create = module->create; stemmer->close = module->close;