Skip to content

Commit

Permalink
Fix memory leaks in ldmsd_request.c
Browse files Browse the repository at this point in the history
  • Loading branch information
tom95858 authored and nichamon committed Aug 31, 2023
1 parent f17e8fd commit 377934f
Showing 1 changed file with 23 additions and 9 deletions.
32 changes: 23 additions & 9 deletions ldms/src/ldmsd/ldmsd_request.c
Original file line number Diff line number Diff line change
Expand Up @@ -1514,19 +1514,18 @@ static int prdcr_add_handler(ldmsd_req_ctxt_t reqc)
if ((int)type < 0) {
reqc->errcode = EINVAL;
cnt = Snprintf(&reqc->line_buf, &reqc->line_len,
"The attribute type '%s' is invalid.",
type_s);
"The attribute type '%s' is invalid.",
type_s);
goto send_reply;
}
if (type == LDMSD_PRDCR_TYPE_LOCAL) {
cnt = Snprintf(&reqc->line_buf, &reqc->line_len,
"Producer with type 'local' is "
"not supported.");
"Producer with type 'local' is "
"not supported.");
reqc->errcode = EINVAL;
goto send_reply;
}
}

attr_name = "xprt";
xprt = ldmsd_req_attr_str_value_get_by_id(reqc, LDMSD_ATTR_XPRT);
if (!xprt)
Expand Down Expand Up @@ -2666,7 +2665,10 @@ static int strgp_add_handler(ldmsd_req_ctxt_t reqc)
free(plugin);
free(container);
free(schema);
free(regex);
free(perm_s);
free(interval);
free(decomp);
return 0;
}

Expand Down Expand Up @@ -3799,6 +3801,7 @@ static int updtr_match_list_handler(ldmsd_req_ctxt_t reqc)
"updtr '%s' does not exist.", name);
reqc->errcode = ENOENT;
ldmsd_send_req_response(reqc, reqc->line_buf);
free(name);
return 0;
}
}
Expand Down Expand Up @@ -3962,6 +3965,7 @@ static int updtr_start_handler(ldmsd_req_ctxt_t reqc)

send_reply:
ldmsd_send_req_response(reqc, reqc->line_buf);
free(auto_interval);
free(updtr_name);
free(interval_str);
free(offset_str);
Expand Down Expand Up @@ -4223,6 +4227,7 @@ static int updtr_status_handler(ldmsd_req_ctxt_t reqc)
LDMSD_REQ_EOM_F);
out:
free(name);
free(reset_s);
if (updtr)
ldmsd_updtr_put(updtr);
return rc;
Expand Down Expand Up @@ -5543,6 +5548,7 @@ static int set_sec_mod_handler(ldmsd_req_ctxt_t reqc)
(void) snprintf(reqc->line_buf, reqc->line_len,
"The given UID '%s' is invalid.",
value);
free(value);
goto free_regex;
}
} else {
Expand All @@ -5551,11 +5557,13 @@ static int set_sec_mod_handler(ldmsd_req_ctxt_t reqc)
reqc->errcode = EINVAL;
(void)snprintf(reqc->line_buf, reqc->line_len,
"Unknown user '%s'", value);
free(value);
goto free_regex;
}
uid = pwd->pw_uid;
}
set_flags |= DEFAULT_AUTHZ_SET_UID;
free(value);
}

value = ldmsd_req_attr_str_value_get_by_id(reqc, LDMSD_ATTR_GID);
Expand All @@ -5567,6 +5575,7 @@ static int set_sec_mod_handler(ldmsd_req_ctxt_t reqc)
(void) snprintf(reqc->line_buf, reqc->line_len,
"The given GID '%s' is invalid.",
value);
free(value);
goto free_regex;
}
} else {
Expand All @@ -5580,6 +5589,7 @@ static int set_sec_mod_handler(ldmsd_req_ctxt_t reqc)
gid = grp->gr_gid;
}
set_flags |= DEFAULT_AUTHZ_SET_GID;
free(value);
}

value = ldmsd_req_attr_str_value_get_by_id(reqc, LDMSD_ATTR_PERM);
Expand All @@ -5589,14 +5599,17 @@ static int set_sec_mod_handler(ldmsd_req_ctxt_t reqc)
reqc->errcode = EINVAL;
(void) snprintf(reqc->line_buf, reqc->line_len,
"String to permission bits conversion failed.");
free(value);
goto free_regex;
} else if (perm > 0777) {
reqc->errcode = EINVAL;
(void) snprintf(reqc->line_buf, reqc->line_len,
"Permission value is out of range.");
free(value);
goto free_regex;
}
set_flags |= DEFAULT_AUTHZ_SET_PERM;
free(value);
}

rc = ldms_set_regex_sec_set(regex, uid, gid, perm, set_flags);
Expand All @@ -5609,7 +5622,6 @@ static int set_sec_mod_handler(ldmsd_req_ctxt_t reqc)
regfree(&regex);
out:
free(regex_s);
free(value);
ldmsd_send_req_response(reqc, reqc->line_buf);
return rc;
}
Expand Down Expand Up @@ -5750,6 +5762,7 @@ int __daemon_status_json_obj(ldmsd_req_ctxt_t reqc)
rc = linebuf_printf(reqc, "}");
return rc;
}
free(thread_stats);
json_s = __thread_stats_as_json(&json_sz);
if (!json_s)
return ENOMEM;
Expand Down Expand Up @@ -6158,6 +6171,7 @@ static int greeting_handler(ldmsd_req_ctxt_t reqc)
out:
free(rep_len_str);
free(num_rec_str);
free(str);
return 0;
}

Expand Down Expand Up @@ -8445,12 +8459,12 @@ __upd_time_stats_json_obj(ldmsd_req_ctxt_t reqc, ldmsd_updtr_t updtr, int reset)

static int update_time_stats_handler(ldmsd_req_ctxt_t reqc)
{
int rc;
int rc = 0;
ldmsd_updtr_t updtr;
char *name, *reset_s;
name = reset_s = NULL;
int cnt = 0;
int reset = 0;
name = reset_s = NULL;

reset_s = ldmsd_req_attr_str_value_get_by_id(reqc, LDMSD_ATTR_RESET);
if (reset_s) {
Expand All @@ -8473,7 +8487,7 @@ static int update_time_stats_handler(ldmsd_req_ctxt_t reqc)
"updtr '%s' doesn't exist.", name);
reqc->errcode = ENOENT;
ldmsd_send_req_response(reqc, reqc->line_buf);
return 0;
goto err;
}
rc = __upd_time_stats_json_obj(reqc, updtr, reset);
} else {
Expand Down

0 comments on commit 377934f

Please sign in to comment.