diff --git a/src/decomp_miniz.c b/src/decomp_miniz.c index 86f3e9f..d3784df 100644 --- a/src/decomp_miniz.c +++ b/src/decomp_miniz.c @@ -46,6 +46,7 @@ static int open_miniz(frogfs_fh_t *f, unsigned int flags) /* gzip */ if (*(p + 2) != 8) { LOGE("unsupported gzip compression method"); + free(priv); return -1; } priv->data += 10; diff --git a/src/frogfs.c b/src/frogfs.c index 3ee05f7..229aa80 100644 --- a/src/frogfs.c +++ b/src/frogfs.c @@ -191,6 +191,10 @@ const frogfs_entry_t *frogfs_get_entry(const frogfs_fs_t *fs, const char *path) do { entry = (const void *) fs->head + e->offs; char *match = frogfs_get_path(fs, entry); + if (!match) { + /* out of memory */ + return NULL; + } if (strcmp(path, match) == 0) { free(match); LOGV("entry %d", middle); diff --git a/src/vfs.c b/src/vfs.c index 2ea042e..04e63ba 100644 --- a/src/vfs.c +++ b/src/vfs.c @@ -187,9 +187,13 @@ static DIR* frogfs_vfs_opendir(void *ctx, const char *path) { frogfs_vfs_t *vfs = (frogfs_vfs_t *) ctx; frogfs_vfs_dh_t *dh = malloc(sizeof(*dh)); + if (!dh) { + return NULL; + } const frogfs_entry_t *entry = frogfs_get_entry(vfs->fs, path); if (entry == NULL) { + free(dh); return NULL; }