From 9d20cbf2e908c3bc8a1950e48c2d630f2e0d0794 Mon Sep 17 00:00:00 2001 From: David Goulet Date: Tue, 7 Sep 2010 22:26:12 +0200 Subject: [PATCH] Fix return value handling for libustcmd Return value was not checked correctly so this was triggering a free() on an invalid pointer causing ustctl to fail badly. Signed-off-by: David Goulet --- libustcmd/ustcmd.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/libustcmd/ustcmd.c b/libustcmd/ustcmd.c index 5b4fd02..f0a6ae0 100644 --- a/libustcmd/ustcmd.c +++ b/libustcmd/ustcmd.c @@ -97,7 +97,7 @@ int ustcmd_set_marker_state(const char *mn, int state, pid_t pid) } result = ustcmd_send_cmd(cmd, pid, NULL); - if (result) { + if (result != 1) { free(cmd); return USTCMD_ERR_GEN; } @@ -182,9 +182,8 @@ int ustcmd_get_subbuf_size(const char *channel, pid_t pid) } result = ustcmd_send_cmd(cmd, pid, &reply); - if (result) { + if (result != 1) { free(cmd); - free(reply); return -1; } @@ -214,9 +213,8 @@ int ustcmd_get_subbuf_num(const char *channel, pid_t pid) } result = ustcmd_send_cmd(cmd, pid, &reply); - if (result) { + if (result != 1) { free(cmd); - free(reply); return -1; } @@ -488,7 +486,6 @@ int ustcmd_get_sock_path(char **sock_path, pid_t pid) result = ustcmd_send_cmd(cmd, pid, &reply); if (result != 1) { free(cmd); - free(reply); return USTCMD_ERR_GEN; } @@ -516,7 +513,7 @@ int ustcmd_force_switch(pid_t pid) * @param pid Targeted PID * @param reply Pointer to string to be filled with a reply string (must * be NULL if no reply is needed for the given command). - * @return -1 if successful, 0 on EOT, 1 on success + * @return -1 if not successful, 0 on EOT, 1 on success */ int ustcmd_send_cmd(const char *cmd, const pid_t pid, char **reply) -- 2.34.1