[Cluster-devel] handle some malloc failures
Jim Meyering
jim at meyering.net
Mon Oct 13 16:38:58 UTC 2008
Here's a series of patches to fix or mark-with-comment uses
of malloc where a failure can lead to NULL dereference.
I started off fixing them, but there were pretty many,
so after a while I merely marked them.
Note I've marked a use of strdup, too. While I went through
the entire list of uses of malloc, I haven't done the same
for strdup. That was just the first one I spotted.
Jim
>From e0d6d82db2f6aa8029b6be2cbc387cef749b81af Mon Sep 17 00:00:00 2001
From: Jim Meyering <meyering at redhat.com>
Date: Mon, 13 Oct 2008 15:57:20 +0200
Subject: [PATCH] don't dereference NULL upon failed malloc
* cman/daemon/daemon.c (process_rendezvous): Fix typo (s/con/newcon/)
that would make a failed realloc cause a NULL dereference.
---
cman/daemon/daemon.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/cman/daemon/daemon.c b/cman/daemon/daemon.c
index b08e78e..6cef080 100644
--- a/cman/daemon/daemon.c
+++ b/cman/daemon/daemon.c
@@ -329,7 +329,7 @@ static int process_rendezvous(poll_handle handle, int fd, int revent, void *data
client_fd = accept(fd, (struct sockaddr *) &socka, &sl);
if (client_fd >= 0) {
struct connection *newcon = malloc(sizeof(struct connection));
- if (!con) {
+ if (!newcon) {
close(client_fd);
return 0; /* returning -1 will remove us */
}
--
1.6.0.2.514.g23abd3
>From 4c5232b19de55b706e060d7e59272f1851bd8930 Mon Sep 17 00:00:00 2001
From: Jim Meyering <meyering at redhat.com>
Date: Mon, 13 Oct 2008 16:11:53 +0200
Subject: [PATCH] * cman/lib/libcman.c (cman_dispatch): Handle a failed malloc.
---
cman/lib/libcman.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/cman/lib/libcman.c b/cman/lib/libcman.c
index bf6df83..9855c17 100644
--- a/cman/lib/libcman.c
+++ b/cman/lib/libcman.c
@@ -518,6 +518,8 @@ int cman_dispatch(cman_handle_t handle, int flags)
if (header->length > sizeof(buf))
{
bufptr = malloc(header->length);
+ if (!bufptr)
+ return -1;
memcpy(bufptr, buf, sizeof(*header));
header = (struct sock_header *)bufptr;
}
--
1.6.0.2.514.g23abd3
>From 43d3ff3bde54bf32de2d003ff7f767691690ba31 Mon Sep 17 00:00:00 2001
From: Jim Meyering <meyering at redhat.com>
Date: Mon, 13 Oct 2008 16:21:31 +0200
Subject: [PATCH] * fence/agents/xvm/ip_lookup.c (add_ip): Handle malloc failure.
---
fence/agents/xvm/ip_lookup.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/fence/agents/xvm/ip_lookup.c b/fence/agents/xvm/ip_lookup.c
index 6500025..cbeb5b2 100644
--- a/fence/agents/xvm/ip_lookup.c
+++ b/fence/agents/xvm/ip_lookup.c
@@ -73,6 +73,8 @@ add_ip(ip_list_t *ipl, char *ipaddr, char family)
dbg_printf(4, "Adding IP %s to list (family %d)\n", ipaddr, family);
ipa = malloc(sizeof(*ipa));
+ if (!ipa)
+ return -1;
memset(ipa, 0, sizeof(*ipa));
ipa->ipa_family = family;
ipa->ipa_address = strdup(ipaddr);
--
1.6.0.2.514.g23abd3
>From c6ab824d5c46b016769dd95e96a4eb135feb2b98 Mon Sep 17 00:00:00 2001
From: Jim Meyering <meyering at redhat.com>
Date: Mon, 13 Oct 2008 17:08:45 +0200
Subject: [PATCH] * gfs/gfs_fsck/inode.c (check_inode): handle failed malloc
---
gfs/gfs_fsck/inode.c | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/gfs/gfs_fsck/inode.c b/gfs/gfs_fsck/inode.c
index 4420880..7a88589 100644
--- a/gfs/gfs_fsck/inode.c
+++ b/gfs/gfs_fsck/inode.c
@@ -125,7 +125,11 @@ static int fs_get_istruct(struct fsck_sb *sdp, struct gfs_inum *inum,
goto out;
}
- ip = (struct fsck_inode *)malloc(sizeof(struct fsck_inode));
+ if(!(ip = (struct fsck_inode *)malloc(sizeof(struct fsck_inode)))) {
+ log_err("Unable to allocate memory for inode\n");
+ error = -1;
+ goto out;
+ }
ip->i_num = *inum;
ip->i_sbd = sdp;
--
1.6.0.2.514.g23abd3
>From df2d490961b836fdd129ed724376813908fc4b6c Mon Sep 17 00:00:00 2001
From: Jim Meyering <meyering at redhat.com>
Date: Mon, 13 Oct 2008 16:31:54 +0200
Subject: [PATCH] remove dead code (useless test of memset return value)
* gfs/gfs_fsck/block_list.c (block_list_create): memset can't fail.
There are many more like this.
---
gfs/gfs_fsck/block_list.c | 5 +----
1 files changed, 1 insertions(+), 4 deletions(-)
diff --git a/gfs/gfs_fsck/block_list.c b/gfs/gfs_fsck/block_list.c
index ecc9dbd..f377fd0 100644
--- a/gfs/gfs_fsck/block_list.c
+++ b/gfs/gfs_fsck/block_list.c
@@ -23,10 +23,7 @@ struct block_list *block_list_create(uint64_t size, enum block_list_type type)
log_info("Creating a block list of size %"PRIu64"...\n", size);
if ((il = malloc(sizeof(*il)))) {
- if(!memset(il, 0, sizeof(*il))) {
- log_err("Cannot set block list to zero\n");
- return NULL;
- }
+ memset(il, 0, sizeof(*il));
il->type = type;
switch(type) {
--
1.6.0.2.514.g23abd3
>From 71f475740de9c7bca1e958f9a7c8936b7a4a471d Mon Sep 17 00:00:00 2001
From: Jim Meyering <meyering at redhat.com>
Date: Mon, 13 Oct 2008 16:48:39 +0200
Subject: [PATCH] add comments marking unchecked malloc calls
* gfs/gfs_fsck/super.c:
* gfs/libgfs/fs_dir.c:
* gfs/libgfs/inode.c:
* gfs/libgfs/super.c (ji_update):
* gfs2/edit/hexedit.c (display_indirect):
* gfs2/edit/savemeta.c (gfs1_rindex_read):
* gfs2/fsck/initialize.c (init_system_inodes):
* gfs2/libgfs2/super.c (rindex_read):
* group/daemon/app.c:
* group/daemon/cpg.c (deliver_cb):
* group/daemon/joinleave.c (new_node):
* group/daemon/main.c (do_get_groups, do_send):
* group/dlm_controld/plock.c (unpack_section_buf):
* group/gfs_controld/plock.c (unpack_section_buf):
* src/daemons/clurmtabd_lib.c (rmtab_insert):
* src/daemons/dtest.c (dtest_shell, main):
---
gfs/gfs_fsck/fs_dir.c | 4 ++++
gfs/gfs_fsck/super.c | 3 +++
gfs/libgfs/fs_dir.c | 4 ++++
gfs/libgfs/inode.c | 1 +
gfs/libgfs/super.c | 1 +
gfs2/edit/hexedit.c | 1 +
gfs2/edit/savemeta.c | 1 +
gfs2/fsck/initialize.c | 1 +
gfs2/libgfs2/super.c | 1 +
group/daemon/app.c | 3 +++
group/daemon/cpg.c | 2 ++
group/daemon/joinleave.c | 1 +
group/daemon/main.c | 2 ++
group/dlm_controld/plock.c | 2 ++
group/gfs_controld/plock.c | 2 ++
rgmanager/src/daemons/clurmtabd_lib.c | 1 +
rgmanager/src/daemons/dtest.c | 2 ++
17 files changed, 32 insertions(+), 0 deletions(-)
diff --git a/gfs/gfs_fsck/fs_dir.c b/gfs/gfs_fsck/fs_dir.c
index 399575e..27f559a 100644
--- a/gfs/gfs_fsck/fs_dir.c
+++ b/gfs/gfs_fsck/fs_dir.c
@@ -549,6 +549,7 @@ static int dir_l_search(struct fsck_inode *dip, identifier_t *id, unsigned int *
exit(1);
}
id->inum = (struct gfs_inum *)malloc(sizeof(struct gfs_inum));
+ /* FIXME: don't dereference NULL on failed malloc */
memset(id->inum, 0, sizeof(struct gfs_inum));
gfs_inum_in(id->inum, (char *)&dent->de_inum);
@@ -558,10 +559,12 @@ static int dir_l_search(struct fsck_inode *dip, identifier_t *id, unsigned int *
exit(1);
}
id->filename = (osi_filename_t *)malloc(sizeof(osi_filename_t));
+ /* FIXME: don't dereference NULL on failed malloc */
memset(id->filename, 0, sizeof(osi_filename_t));
id->filename->len = gfs16_to_cpu(dent->de_name_len);
id->filename->name = malloc(id->filename->len);
+ /* FIXME: don't dereference NULL on failed malloc */
memset(id->filename->name, 0, id->filename->len);
memcpy(id->filename->name, (char *)dent+sizeof(struct gfs_dirent),
@@ -801,6 +804,7 @@ static int dir_split_leaf(struct fsck_inode *dip, uint32 index, uint64 leaf_no)
This code is complicated enough already. */
lp = (uint64 *)malloc(half_len * sizeof(uint64));
+ /* FIXME: don't dereference NULL on failed malloc */
memset(lp, 0, half_len * sizeof(uint64));
error = readi(dip, (char *)lp, start * sizeof(uint64),
diff --git a/gfs/gfs_fsck/super.c b/gfs/gfs_fsck/super.c
index b2c81f1..9c553f2 100644
--- a/gfs/gfs_fsck/super.c
+++ b/gfs/gfs_fsck/super.c
@@ -710,6 +710,7 @@ int gfs_rgindex_rebuild(struct fsck_sb *sdp, osi_list_t *ret_list,
/* ------------------------------------------------------------- */
/* Allocate a new RG and index. */
calc_rgd = (struct fsck_rgrp *)malloc(sizeof(struct fsck_rgrp));
+ /* FIXME: handle failed malloc */
memset(calc_rgd, 0, sizeof(struct fsck_rgrp));
calc_rgd->rd_sbd = sdp; /* hopefully this is not used */
osi_list_add_prev(&calc_rgd->rd_list, ret_list);
@@ -975,6 +976,7 @@ int gfs_rgindex_calculate(struct fsck_sb *sdp, osi_list_t *ret_list,
(rgs_per_subd - 1) * (adjust_subdevice_size / rgs_per_subd);
calc_rgd = (struct fsck_rgrp *)malloc(sizeof(struct fsck_rgrp));
+ /* FIXME: handle failed malloc */
memset(calc_rgd, 0, sizeof(struct fsck_rgrp));
calc_rgd->rd_sbd = sdp; /* hopefully this is not used */
osi_list_add_prev(&calc_rgd->rd_list, ret_list);
@@ -1117,6 +1119,7 @@ int ri_update(struct fsck_sb *sdp)
}
rgd = (struct fsck_rgrp *)malloc(sizeof(struct fsck_rgrp));
+ /* FIXME: handle failed malloc */
memset(rgd, 0, sizeof(struct fsck_rgrp));
rgd->rd_sbd = sdp;
osi_list_add_prev(&rgd->rd_list, &sdp->rglist);
diff --git a/gfs/libgfs/fs_dir.c b/gfs/libgfs/fs_dir.c
index 0d704d4..fe34b8a 100644
--- a/gfs/libgfs/fs_dir.c
+++ b/gfs/libgfs/fs_dir.c
@@ -544,6 +544,7 @@ static int dir_l_search(int disk_fd, struct gfs_inode *dip, identifier_t *id,
exit(1);
}
id->inum = (struct gfs_inum *)malloc(sizeof(struct gfs_inum));
+ /* FIXME: handle failed malloc */
memset(id->inum, 0, sizeof(struct gfs_inum));
gfs_inum_in(id->inum, (char *)&dent->de_inum);
@@ -553,10 +554,12 @@ static int dir_l_search(int disk_fd, struct gfs_inode *dip, identifier_t *id,
exit(1);
}
id->filename = (osi_filename_t *)malloc(sizeof(osi_filename_t));
+ /* FIXME: handle failed malloc */
memset(id->filename, 0, sizeof(osi_filename_t));
id->filename->len = gfs16_to_cpu(dent->de_name_len);
id->filename->name = malloc(id->filename->len);
+ /* FIXME: handle failed malloc */
memset(id->filename->name, 0, id->filename->len);
memcpy(id->filename->name, (char *)dent+sizeof(struct gfs_dirent),
@@ -798,6 +801,7 @@ static int dir_split_leaf(int disk_fd, struct gfs_inode *dip, uint32 index,
This code is complicated enough already. */
lp = (uint64 *)malloc(half_len * sizeof(uint64));
+ /* FIXME: handle failed malloc */
memset(lp, 0, half_len * sizeof(uint64));
error = readi(disk_fd, dip, (char *)lp, start * sizeof(uint64),
diff --git a/gfs/libgfs/inode.c b/gfs/libgfs/inode.c
index d7f4e53..b288ef6 100644
--- a/gfs/libgfs/inode.c
+++ b/gfs/libgfs/inode.c
@@ -122,6 +122,7 @@ static int fs_get_istruct(int disk_fd, struct gfs_sbd *sdp,
}
ip = (struct gfs_inode *)malloc(sizeof(struct gfs_inode));
+ /* FIXME: handle failed malloc */
ip->i_num = *inum;
ip->i_sbd = sdp;
diff --git a/gfs/libgfs/super.c b/gfs/libgfs/super.c
index afaf2bb..c479c27 100644
--- a/gfs/libgfs/super.c
+++ b/gfs/libgfs/super.c
@@ -344,6 +344,7 @@ int ri_update(int disk_fd, struct gfs_sbd *sdp)
goto fail;
}
rgd = (struct gfs_rgrpd *)malloc(sizeof(struct gfs_rgrpd));
+ /* FIXME: handle failed malloc */
rgd->rd_sbd = sdp;
osi_list_add_prev((osi_list_t *)&rgd->rd_list,
(osi_list_t *)&sdp->sd_rglist);
diff --git a/gfs2/edit/hexedit.c b/gfs2/edit/hexedit.c
index 534d8cb..bc17d2e 100644
--- a/gfs2/edit/hexedit.c
+++ b/gfs2/edit/hexedit.c
@@ -1259,6 +1259,7 @@ int display_indirect(struct iinfo *ind, int indblocks, int level, uint64_t start
char *tmpbuf;
more_indir = malloc(sizeof(struct iinfo));
+ /* FIXME: handle failed malloc */
tmpbuf = malloc(sbd.bsize);
if (tmpbuf) {
do_lseek(sbd.device_fd,
diff --git a/gfs2/edit/savemeta.c b/gfs2/edit/savemeta.c
index 693ac0f..a1523b3 100644
--- a/gfs2/edit/savemeta.c
+++ b/gfs2/edit/savemeta.c
@@ -292,6 +292,7 @@ int gfs1_rindex_read(struct gfs2_sbd *sdp, int fd, int *count1)
return -1;
rgd = (struct rgrp_list *)malloc(sizeof(struct rgrp_list));
+ /* FIXME: handle failed malloc */
memset(rgd, 0, sizeof(struct rgrp_list));
osi_list_add_prev(&rgd->list, &sdp->rglist);
diff --git a/gfs2/fsck/initialize.c b/gfs2/fsck/initialize.c
index 1d2df6a..bb395cb 100644
--- a/gfs2/fsck/initialize.c
+++ b/gfs2/fsck/initialize.c
@@ -212,6 +212,7 @@ static int init_system_inodes(struct gfs2_sbd *sdp)
gfs2_lookupi(sdp->master_dir, "statfs", 6, &sdp->md.statfs);
buf = malloc(sdp->md.statfs->i_di.di_size);
+ /* FIXME: handle failed malloc */
gfs2_readi(sdp->md.statfs, buf, 0, sdp->md.statfs->i_di.di_size);
/* call gfs2_inum_range_in() to retrieve range */
gfs2_statfs_change_in(&sc, buf);
diff --git a/gfs2/libgfs2/super.c b/gfs2/libgfs2/super.c
index 88708fe..c82221e 100644
--- a/gfs2/libgfs2/super.c
+++ b/gfs2/libgfs2/super.c
@@ -184,6 +184,7 @@ int rindex_read(struct gfs2_sbd *sdp, int fd, int *count1)
return -1;
rgd = (struct rgrp_list *)malloc(sizeof(struct rgrp_list));
+ /* FIXME: handle failed malloc */
memset(rgd, 0, sizeof(struct rgrp_list));
osi_list_add_prev(&rgd->list, &sdp->rglist);
diff --git a/group/daemon/app.c b/group/daemon/app.c
index 30c11da..9ca2801 100644
--- a/group/daemon/app.c
+++ b/group/daemon/app.c
@@ -178,6 +178,7 @@ void extend_recover_event(group_t *g, event_t *ev, int nodeid)
}
id = malloc(sizeof(struct nodeid));
+ /* FIXME: handle failed malloc */
id->nodeid = new_id_nodeid;
list_add(&id->list, &ev->extended);
}
@@ -274,6 +275,7 @@ struct recovery_set *add_recovery_set_cpg(int nodeid, int procdown)
if (node->nodeid == nodeid) {
log_group(g, "add to recovery set %d", nodeid);
re = malloc(sizeof(*re));
+ /* FIXME: handle failed malloc */
memset(re, 0, sizeof(struct recovery_entry));
re->group = g;
list_add_tail(&re->list, &rs->entries);
@@ -1534,6 +1536,7 @@ int recover_current_event(group_t *g)
}
id = malloc(sizeof(struct nodeid));
+ /* FIXME: handle failed malloc */
id->nodeid = rev->nodeid;
list_add(&id->list, &ev->extended);
log_group(g, "extend active rev %d with failed node %d",
diff --git a/group/daemon/cpg.c b/group/daemon/cpg.c
index aa3974b..6dd98cb 100644
--- a/group/daemon/cpg.c
+++ b/group/daemon/cpg.c
@@ -648,12 +648,14 @@ void deliver_cb(cpg_handle_t handle, struct cpg_name *group_name,
msg_type(msg->ms_type), nodeid);
save = malloc(sizeof(struct save_msg));
+ /* FIXME: handle failed malloc */
memset(save, 0, sizeof(struct save_msg));
save->nodeid = nodeid;
save->msg_len = data_len;
if (data_len > sizeof(msg_t)) {
buf = malloc(data_len);
+ /* FIXME: handle failed malloc */
memcpy(buf, data, data_len);
save->msg_long = buf;
memcpy(&save->msg, data, sizeof(msg_t));
diff --git a/group/daemon/joinleave.c b/group/daemon/joinleave.c
index 4169392..95cc444 100644
--- a/group/daemon/joinleave.c
+++ b/group/daemon/joinleave.c
@@ -157,6 +157,7 @@ node_t *new_node(int nodeid)
node_t *node;
node = malloc(sizeof(*node));
+ /* FIXME: handle failed malloc */
memset(node, 0, sizeof(*node));
node->nodeid = nodeid;
return node;
diff --git a/group/daemon/main.c b/group/daemon/main.c
index c598307..c875f14 100644
--- a/group/daemon/main.c
+++ b/group/daemon/main.c
@@ -485,6 +485,7 @@ static int do_get_groups(int ci, int argc, char **argv)
int rv, count = 0, max = atoi(argv[1]);
data = malloc(sizeof(group_data_t));
+ /* FIXME: handle failed malloc */
count = 0;
list_for_each_entry(g, &gd_groups, list) {
@@ -588,6 +589,7 @@ static void do_send(char *name, int level, int len, char *data)
total = sizeof(msg_t) + len;
buf = malloc(total);
+ /* FIXME: handle failed malloc */
memset(buf, 0, total);
memcpy(buf + sizeof(msg_t), data, len);
diff --git a/group/dlm_controld/plock.c b/group/dlm_controld/plock.c
index 3a95caf..bb47b05 100644
--- a/group/dlm_controld/plock.c
+++ b/group/dlm_controld/plock.c
@@ -1618,6 +1618,7 @@ static int unpack_section_buf(struct lockspace *ls, char *numbuf, int buflen)
for (i = 0; i < count; i++) {
if (!pp->waiter) {
po = malloc(sizeof(struct posix_lock));
+ /* FIXME: handle failed malloc */
po->start = le64_to_cpu(pp->start);
po->end = le64_to_cpu(pp->end);
po->owner = le64_to_cpu(pp->owner);
@@ -1627,6 +1628,7 @@ static int unpack_section_buf(struct lockspace *ls, char *numbuf, int buflen)
list_add_tail(&po->list, &r->locks);
} else {
w = malloc(sizeof(struct lock_waiter));
+ /* FIXME: handle failed malloc */
w->info.start = le64_to_cpu(pp->start);
w->info.end = le64_to_cpu(pp->end);
w->info.owner = le64_to_cpu(pp->owner);
diff --git a/group/gfs_controld/plock.c b/group/gfs_controld/plock.c
index 0b485a2..c441b25 100644
--- a/group/gfs_controld/plock.c
+++ b/group/gfs_controld/plock.c
@@ -1836,6 +1836,7 @@ static int unpack_section_buf(struct mountgroup *mg, char *numbuf, int buflen)
for (i = 0; i < count; i++) {
if (!pp->waiter) {
po = malloc(sizeof(struct posix_lock));
+ /* FIXME: handle failed malloc */
po->start = le64_to_cpu(pp->start);
po->end = le64_to_cpu(pp->end);
po->owner = le64_to_cpu(pp->owner);
@@ -1845,6 +1846,7 @@ static int unpack_section_buf(struct mountgroup *mg, char *numbuf, int buflen)
list_add_tail(&po->list, &r->locks);
} else {
w = malloc(sizeof(struct lock_waiter));
+ /* FIXME: handle failed malloc */
w->info.start = le64_to_cpu(pp->start);
w->info.end = le64_to_cpu(pp->end);
w->info.owner = le64_to_cpu(pp->owner);
diff --git a/rgmanager/src/daemons/clurmtabd_lib.c b/rgmanager/src/daemons/clurmtabd_lib.c
index 7c869df..aa216a2 100644
--- a/rgmanager/src/daemons/clurmtabd_lib.c
+++ b/rgmanager/src/daemons/clurmtabd_lib.c
@@ -204,6 +204,7 @@ rmtab_insert(rmtab_node **head, rmtab_node *pre, char *host,
/* Copy in info */
rnew = malloc(sizeof(*rnew));
+ /* FIXME: handle failed malloc */
memset(rnew, 0, sizeof(*rnew));
rnew->rn_hostname = strdup(host);
rnew->rn_path = strdup(path);
diff --git a/rgmanager/src/daemons/dtest.c b/rgmanager/src/daemons/dtest.c
index 8ee27e5..a42eed1 100644
--- a/rgmanager/src/daemons/dtest.c
+++ b/rgmanager/src/daemons/dtest.c
@@ -274,6 +274,7 @@ dtest_shell(void)
dep_op_t *ops = NULL, *op;
nodes = malloc(sizeof(int)*nodes_all_count);
+ /* FIXME: handle failed malloc */
while (!done) {
@@ -325,6 +326,7 @@ dtest_shell(void)
free(nodes_online);
nodes_online = malloc(sizeof(int) * cnt);
+ /* FIXME: handle failed malloc */
for (x = 0; x < cnt; x++)
nodes_online[x] = nodes[x];
--
1.6.0.2.514.g23abd3
>From 13ac364cc61333595c18a518f5140498e022a697 Mon Sep 17 00:00:00 2001
From: Jim Meyering <meyering at redhat.com>
Date: Mon, 13 Oct 2008 17:21:54 +0200
Subject: [PATCH] Remove unused local variable, buf,
* gfs2/edit/savemeta.c (save_inode_data): ...along with malloc and free.
---
gfs2/edit/savemeta.c | 3 ---
1 files changed, 0 insertions(+), 3 deletions(-)
diff --git a/gfs2/edit/savemeta.c b/gfs2/edit/savemeta.c
index a1523b3..9587d58 100644
--- a/gfs2/edit/savemeta.c
+++ b/gfs2/edit/savemeta.c
@@ -583,11 +583,9 @@ void save_inode_data(int out_fd)
osi_list_t *prev_list, *cur_list, *tmp;
struct gfs2_buffer_head *metabh, *mybh;
int i;
- char *buf;
for (i = 0; i < GFS2_MAX_META_HEIGHT; i++)
osi_list_init(&metalist[i]);
- buf = malloc(sbd.bsize);
metabh = bread(&sbd, block);
inode = inode_get(&sbd, metabh);
height = inode->i_di.di_height;
@@ -662,7 +660,6 @@ void save_inode_data(int out_fd)
brelse(metabh, not_updated);
}
inode_put(inode, not_updated);
- free(buf);
}
void get_journal_inode_blocks(void)
--
1.6.0.2.514.g23abd3
>From 4816b957b4cfc9b478522adfba238cb2a3c45404 Mon Sep 17 00:00:00 2001
From: Jim Meyering <meyering at redhat.com>
Date: Mon, 13 Oct 2008 18:12:14 +0200
Subject: [PATCH] add comments marking unchecked strdup calls
* config/tools/ccs_tool/editconf.c (add_fence_args):
---
config/tools/ccs_tool/editconf.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/config/tools/ccs_tool/editconf.c b/config/tools/ccs_tool/editconf.c
index 53b0ed6..28e24da 100644
--- a/config/tools/ccs_tool/editconf.c
+++ b/config/tools/ccs_tool/editconf.c
@@ -447,6 +447,7 @@ static void add_fence_args(xmlNode *fencenode, int argc, char **argv, int optind
char *equals;
prop = strdup(argv[i]);
+ /* FIXME: handle failed strdup */
equals = strchr(prop, '=');
if (!equals)
die("option '%s' is not opt=value pair\n", prop);
--
1.6.0.2.514.g23abd3
More information about the Cluster-devel
mailing list