aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDarrick J. Wong <darrick.wong@oracle.com>2019-10-16 22:35:25 -0400
committerEric Sandeen <sandeen@sandeen.net>2019-10-16 22:35:25 -0400
commitd504cf0b0198998ae0158fd7a111c49fce4f6471 (patch)
tree0269e1657d1653e830a45285d192eccee7b14df9
parent233fabee02b632b783aed9ad981908a2fab14cfa (diff)
downloadxfsprogs-dev-d504cf0b0198998ae0158fd7a111c49fce4f6471.tar.gz
libfrog: fix missing error checking in bitmap code
Check library calls for error codes being returned. Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Reviewed-by: Eric Sandeen <sandeen@redhat.com> Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
-rw-r--r--libfrog/bitmap.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/libfrog/bitmap.c b/libfrog/bitmap.c
index be95965fcb..a75d085a9f 100644
--- a/libfrog/bitmap.c
+++ b/libfrog/bitmap.c
@@ -72,21 +72,30 @@ bitmap_alloc(
struct bitmap **bmapp)
{
struct bitmap *bmap;
+ int ret;
bmap = calloc(1, sizeof(struct bitmap));
if (!bmap)
return errno;
bmap->bt_tree = malloc(sizeof(struct avl64tree_desc));
if (!bmap->bt_tree) {
- free(bmap);
- return errno;
+ ret = errno;
+ goto out;
}
- pthread_mutex_init(&bmap->bt_lock, NULL);
+ ret = pthread_mutex_init(&bmap->bt_lock, NULL);
+ if (ret)
+ goto out_tree;
+
avl64_init_tree(bmap->bt_tree, &bitmap_ops);
*bmapp = bmap;
return 0;
+out_tree:
+ free(bmap->bt_tree);
+out:
+ free(bmap);
+ return ret;
}
/* Free a bitmap. */