gfs2-utils: master - gfs2l: Check unchecked returns in openfs
Andrew Price
andyp at fedoraproject.org
Fri Oct 10 16:19:38 UTC 2014
Gitweb: http://git.fedorahosted.org/git/?p=gfs2-utils.git;a=commitdiff;h=0ae4f708ee2fc2c8c246444a87d7cc1f14e96ae1
Commit: 0ae4f708ee2fc2c8c246444a87d7cc1f14e96ae1
Parent: f171e00058c706662b1e84567088ed3d9f1acbc6
Author: Andrew Price <anprice at redhat.com>
AuthorDate: Fri Oct 10 17:01:30 2014 +0100
Committer: Andrew Price <anprice at redhat.com>
CommitterDate: Fri Oct 10 17:01:30 2014 +0100
gfs2l: Check unchecked returns in openfs
Fix some coverity complaints that return values from compute_constants()
and lgfs2_get_dev_info() weren't being checked. Also avoid unnecessary
memory management for the gfs2_sbd.
Signed-off-by: Andrew Price <anprice at redhat.com>
---
gfs2/libgfs2/gfs2l.c | 45 ++++++++++++++++++++++-----------------------
1 files changed, 22 insertions(+), 23 deletions(-)
diff --git a/gfs2/libgfs2/gfs2l.c b/gfs2/libgfs2/gfs2l.c
index eda9531..5d9afd8 100644
--- a/gfs2/libgfs2/gfs2l.c
+++ b/gfs2/libgfs2/gfs2l.c
@@ -96,36 +96,38 @@ static int getopts(int argc, char *argv[], struct cmdopts *opts)
return 0;
}
-static struct gfs2_sbd *openfs(const char *path)
+static int openfs(const char *path, struct gfs2_sbd *sdp)
{
int fd;
int ret;
int sane;
int count;
- struct gfs2_sbd *sdp = calloc(1, sizeof(struct gfs2_sbd));
- if (sdp == NULL) {
- perror("calloc");
- return NULL;
- }
fd = open(path, O_RDWR);
if (fd < 0) {
fprintf(stderr, "Failed to open %s\n", path);
- free(sdp);
- return NULL;
+ return 1;
}
memset(sdp, 0, sizeof(*sdp));
sdp->bsize = GFS2_BASIC_BLOCK;
sdp->device_fd = fd;
- compute_constants(sdp);
- lgfs2_get_dev_info(fd, &sdp->dinfo);
+ ret = compute_constants(sdp);
+ if (ret != 0) {
+ perror("Bad constants");
+ return 1;
+ }
+ ret = lgfs2_get_dev_info(fd, &sdp->dinfo);
+ if (ret != 0) {
+ perror("Failed to gather device info");
+ return 1;
+ }
fix_device_geometry(sdp);
ret = read_sb(sdp);
if (ret != 0) {
perror("Could not read sb");
- return NULL;
+ return 1;
}
sdp->master_dir = lgfs2_inode_read(sdp, sdp->sd_sb.sb_master_dir.no_addr);
@@ -135,17 +137,16 @@ static struct gfs2_sbd *openfs(const char *path)
rindex_read(sdp, 0, &count, &sane);
} else {
perror("Failed to look up rindex");
- free(sdp);
- return NULL;
+ return 1;
}
- return sdp;
+ return 0;
}
int main(int argc, char *argv[])
{
int ret;
struct cmdopts opts = {NULL, NULL};
- struct gfs2_sbd *sdp;
+ struct gfs2_sbd sbd;
struct lgfs2_lang_result *result;
struct lgfs2_lang_state *state;
@@ -158,10 +159,8 @@ int main(int argc, char *argv[])
exit(0);
}
- sdp = openfs(argv[optind]);
- if (sdp == NULL) {
+ if (openfs(argv[optind], &sbd))
exit(1);
- }
state = lgfs2_lang_init();
if (state == NULL) {
@@ -176,9 +175,9 @@ int main(int argc, char *argv[])
return ret;
}
- for (result = lgfs2_lang_result_next(state, sdp);
+ for (result = lgfs2_lang_result_next(state, &sbd);
result != NULL;
- result = lgfs2_lang_result_next(state, sdp)) {
+ result = lgfs2_lang_result_next(state, &sbd)) {
if (result == NULL) {
fprintf(stderr, "Failed to interpret script\n");
return -1;
@@ -187,9 +186,9 @@ int main(int argc, char *argv[])
lgfs2_lang_result_free(&result);
}
- gfs2_rgrp_free(&sdp->rgtree);
- inode_put(&sdp->md.riinode);
- inode_put(&sdp->master_dir);
+ gfs2_rgrp_free(&sbd.rgtree);
+ inode_put(&sbd.md.riinode);
+ inode_put(&sbd.master_dir);
lgfs2_lang_free(&state);
free(opts.fspath);
return 0;
More information about the cluster-commits
mailing list