From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jim Meyering Date: Mon, 13 Oct 2008 18:38:58 +0200 Subject: [Cluster-devel] handle some malloc failures Message-ID: <87vdvwlaal.fsf@rho.meyering.net> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 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 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 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 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 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 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 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 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 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