[ltt-dev] [PATCH 1/2] Fix asprintf warning ignoring return value

Mathieu Desnoyers compudj at krystal.dyndns.org
Fri Sep 3 16:37:14 EDT 2010


* David Goulet (david.goulet at polymtl.ca) wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> 
> 
> On 10-09-03 02:52 PM, Mathieu Desnoyers wrote:
> > * David Goulet (david.goulet at polymtl.ca) wrote:
> >> Signed-off-by: David Goulet <david.goulet at polymtl.ca>
> >> ---
> >>  libust/tracectl.c    |   63 ++++++++++++++++++++++++++++++++++++++++++--------
> >>  libustcmd/ustcmd.c   |   41 +++++++++++++++++++++++++++-----
> >>  libustcomm/ustcomm.c |   24 ++++++++++++++++---
> >>  libustd/libustd.c    |   37 ++++++++++++++++++++++++----
> >>  tests/hello/hello.c  |    6 +++-
> >>  ustd/ustd.c          |   12 ++++++++-
> >>  6 files changed, 152 insertions(+), 31 deletions(-)
> >>
> >> diff --git a/libust/tracectl.c b/libust/tracectl.c
> >> index ac551d5..1bb841f 100644
> >> --- a/libust/tracectl.c
> >> +++ b/libust/tracectl.c
> >> @@ -156,7 +156,11 @@ static void inform_consumer_daemon(const char *trace_name)
> >>  			/* iterate on all cpus */
> >>  			for(j=0; j<trace->channels[i].n_cpus; j++) {
> >>  				char *buf;
> >> -				asprintf(&buf, "%s_%d", trace->channels[i].channel_name, j);
> >> +				if(asprintf(&buf, "%s_%d", trace->channels[i].channel_name, j) == -1) {
> > 
> > please standardize on the kernel coding style:
> > 
> > if ()
> > for ()
> > switch ()
> > 
> 
> There is not a single if/for/switch in these files that follow this standard...
> You still want me to change all if(asprin... to if (asprintf.. ?
> 
[...]
> >>  	if (result) {

there is at least one ;)

> >> @@ -114,7 +118,11 @@ int ustcmd_set_subbuf_size(const char *channel_size, pid_t pid)
> >>  	char *cmd;
> >>  	int result;
> >>  
> >> -	asprintf(&cmd, "%s %s", "set_subbuf_size", channel_size);
> >> +	if(asprintf(&cmd, "%s %s", "set_subbuf_size", channel_size) == -1) {
> >> +		ERR("ustcmd_set_subbuf_size : asprintf failed (set_subbuf_size %s)",
> >> +				channel_size);
> >> +		return -1;
> >> +	}
> >>  
> >>  	result = ustcmd_send_cmd(cmd, pid, NULL);
> >>  	if (result != 1) {

and two...

So yes.

Mathieu

> >> @@ -138,7 +146,11 @@ int ustcmd_set_subbuf_num(const char *channel_size, pid_t pid)
> >>  	char *cmd;
> >>  	int result;
> >>  
> >> -	asprintf(&cmd, "%s %s", "set_subbuf_num", channel_size);
> >> +	if(asprintf(&cmd, "%s %s", "set_subbuf_num", channel_size) == -1) {
> >> +		ERR("ustcmd_set_subbuf_num : asprintf failed (set_subbuf_num %s",
> >> +				channel_size);
> >> +		return -1;
> >> +	}
> >>  
> >>  	result = ustcmd_send_cmd(cmd, pid, NULL);
> >>  	if (result != 1) {
> >> @@ -163,7 +175,11 @@ int ustcmd_get_subbuf_size(const char *channel, pid_t pid)
> >>  	int result;
> >>  
> >>  	/* format: channel_cpu */
> >> -	asprintf(&cmd, "%s %s_0", "get_subbuf_size", channel);
> >> +	if(asprintf(&cmd, "%s %s_0", "get_subbuf_size", channel) == -1) {
> >> +		ERR("ustcmd_get_subbuf_size : asprintf failed (get_subbuf_size, %s_0",
> >> +				channel);
> >> +		return -1;
> >> +	}
> >>  
> >>  	result = ustcmd_send_cmd(cmd, pid, &reply);
> >>  	if (result) {
> >> @@ -191,7 +207,11 @@ int ustcmd_get_subbuf_num(const char *channel, pid_t pid)
> >>  	int result;
> >>  
> >>  	/* format: channel_cpu */
> >> -	asprintf(&cmd, "%s %s_0", "get_n_subbufs", channel);
> >> +	if(asprintf(&cmd, "%s %s_0", "get_n_subbufs", channel) == -1) {
> >> +		ERR("ustcmd_get_subbuf_num : asprintf failed (get_n_subbufs, %s_0",
> >> +				channel);
> >> +		return -1;
> >> +	}
> >>  
> >>  	result = ustcmd_send_cmd(cmd, pid, &reply);
> >>  	if (result) {
> >> @@ -432,7 +452,11 @@ int ustcmd_set_sock_path(const char *sock_path, pid_t pid)
> >>  	char *cmd;
> >>  	int result;
> >>  
> >> -	asprintf(&cmd, "%s %s", "set_sock_path", sock_path);
> >> +	if(asprintf(&cmd, "%s %s", "set_sock_path", sock_path) == -1) {
> >> +		ERR("ustcmd_set_sock_path : asprintf failed (set_sock_path, %s",
> >> +				sock_path);
> >> +		return -1;
> >> +	}
> >>  
> >>  	result = ustcmd_send_cmd(cmd, pid, NULL);
> >>  	if (result != 1) {
> >> @@ -456,7 +480,10 @@ int ustcmd_get_sock_path(char **sock_path, pid_t pid)
> >>  	char *cmd, *reply;
> >>  	int result;
> >>  
> >> -	asprintf(&cmd, "%s", "get_sock_path");
> >> +	if(asprintf(&cmd, "%s", "get_sock_path") == -1) {
> >> +		ERR("ustcmd_get_sock_path : asprintf failed");
> >> +		return USTCMD_ERR_GEN;
> >> +	}
> >>  
> >>  	result = ustcmd_send_cmd(cmd, pid, &reply);
> >>  	if (result != 1) {
> >> diff --git a/libustcomm/ustcomm.c b/libustcomm/ustcomm.c
> >> index f2b7a03..30c8f24 100644
> >> --- a/libustcomm/ustcomm.c
> >> +++ b/libustcomm/ustcomm.c
> >> @@ -163,7 +163,11 @@ int ustcomm_request_consumer(pid_t pid, const char *channel)
> >>  		return -1;
> >>  	}
> >>  
> >> -	asprintf(&msg, "collect %d %s", pid, channel); 
> >> +	if(asprintf(&msg, "collect %d %s", pid, channel) == -1) {
> >> +		ERR("ustcomm_request_consumer : asprintf failed (collect %d/%s)",
> >> +				pid, channel);
> >> +		return -1;
> >> +	}
> >>  
> >>  	/* don't signal it because it's the daemon */
> >>  	result = ustcomm_connect_path(path, &conn, -1);
> >> @@ -706,7 +710,11 @@ int ustcomm_init_ustd(struct ustcomm_ustd *handle, const char *sock_path)
> >>  	int retval = 0;
> >>  
> >>  	if(sock_path) {
> >> -		asprintf(&name, "%s", sock_path);
> >> +		if(asprintf(&name, "%s", sock_path) == -1) {
> >> +			ERR("ustcomm_init_ustd : asprintf failed (sock_path %s)",
> >> +					sock_path);
> >> +			return -1;
> >> +		}
> >>  	}
> >>  	else {
> >>  		int result;
> >> @@ -718,7 +726,11 @@ int ustcomm_init_ustd(struct ustcomm_ustd *handle, const char *sock_path)
> >>  			return -1;
> >>  		}
> >>  
> >> -		asprintf(&name, "%s/%s", SOCK_DIR, "ustd");
> >> +		if(asprintf(&name, "%s/%s", SOCK_DIR, "ustd") == -1) {
> >> +			ERR("ustcomm_init_ustd : asprintf failed (%s/ustd)",
> >> +					SOCK_DIR);
> >> +			return -1;
> >> +		}
> >>  	}
> >>  
> >>  	handle->server.listen_fd = init_named_socket(name, &handle->server.socketpath);
> >> @@ -864,7 +876,11 @@ char *nth_token(const char *str, int tok_no)
> >>  		retval = NULL;
> >>  	}
> >>  
> >> -	asprintf(&retval, "%.*s", (int)(end-start), start);
> >> +	if(asprintf(&retval, "%.*s", (int)(end-start), start) == -1) {
> >> +		ERR("nth_token : asprintf failed (%.*s)",
> >> +				(int)(end-start), start);
> >> +		return NULL;
> >> +	}
> >>  
> >>  	return retval;
> >>  }
> >> diff --git a/libustd/libustd.c b/libustd/libustd.c
> >> index 4935131..cc88cde 100644
> >> --- a/libustd/libustd.c
> >> +++ b/libustd/libustd.c
> >> @@ -58,7 +58,12 @@ int get_subbuffer(struct buffer_info *buf)
> >>  	int retval;
> >>  	int result;
> >>  
> >> -	asprintf(&send_msg, "get_subbuffer %s", buf->name);
> >> +	if(asprintf(&send_msg, "get_subbuffer %s", buf->name) == -1) {
> >> +		ERR("get_subbuffer : asprintf failed (%s)",
> >> +				buf->name);
> >> +		retval = -1;
> >> +		goto end;
> >> +	}
> >>  	result = ustcomm_send_request(buf->conn, send_msg, &received_msg);
> >>  	if((result == -1 && (errno == ECONNRESET || errno == EPIPE)) || result == 0) {
> >>  		DBG("app died while being traced");
> >> @@ -118,7 +123,12 @@ int put_subbuffer(struct buffer_info *buf)
> >>  	int retval;
> >>  	int result;
> >>  
> >> -	asprintf(&send_msg, "put_subbuffer %s %ld", buf->name, buf->consumed_old);
> >> +	if(asprintf(&send_msg, "put_subbuffer %s %ld", buf->name, buf->consumed_old) == -1) {
> >> +		ERR("put_subbuffer : asprintf failed (%s %ld)",
> >> +				buf->name, buf->consumed_old);
> >> +		retval = -1;
> >> +		goto end;
> >> +	}
> >>  	result = ustcomm_send_request(buf->conn, send_msg, &received_msg);
> >>  	if(result < 0 && (errno == ECONNRESET || errno == EPIPE)) {
> >>  		retval = PUT_SUBBUF_DIED;
> >> @@ -215,7 +225,10 @@ struct buffer_info *connect_buffer(struct libustd_instance *instance, pid_t pid,
> >>  	}
> >>  
> >>  	/* get pidunique */
> >> -	asprintf(&send_msg, "get_pidunique");
> >> +	if(asprintf(&send_msg, "get_pidunique") == -1) {
> >> +		ERR("connect_buffer : asprintf failed (get_pidunique)");
> >> +		return NULL;
> >> +	}
> >>  	result = ustcomm_send_request(buf->conn, send_msg, &received_msg);
> >>  	free(send_msg);
> >>  	if(result == -1) {
> >> @@ -235,7 +248,11 @@ struct buffer_info *connect_buffer(struct libustd_instance *instance, pid_t pid,
> >>  	DBG("got pidunique %lld", buf->pidunique);
> >>  
> >>  	/* get shmid */
> >> -	asprintf(&send_msg, "get_shmid %s", buf->name);
> >> +	if(asprintf(&send_msg, "get_shmid %s", buf->name) == -1) {
> >> +		ERR("connect_buffer : asprintf failed (get_schmid %s)",
> >> +				buf->name);
> >> +		return NULL;
> >> +	}
> >>  	result = ustcomm_send_request(buf->conn, send_msg, &received_msg);
> >>  	free(send_msg);
> >>  	if(result == -1) {
> >> @@ -255,7 +272,11 @@ struct buffer_info *connect_buffer(struct libustd_instance *instance, pid_t pid,
> >>  	DBG("got shmids %d %d", buf->shmid, buf->bufstruct_shmid);
> >>  
> >>  	/* get n_subbufs */
> >> -	asprintf(&send_msg, "get_n_subbufs %s", buf->name);
> >> +	if(asprintf(&send_msg, "get_n_subbufs %s", buf->name) == -1) {
> >> +		ERR("connect_buffer : asprintf failed (get_n_subbufs %s)",
> >> +				buf->name);
> >> +		return NULL;
> >> +	}
> >>  	result = ustcomm_send_request(buf->conn, send_msg, &received_msg);
> >>  	free(send_msg);
> >>  	if(result == -1) {
> >> @@ -275,7 +296,11 @@ struct buffer_info *connect_buffer(struct libustd_instance *instance, pid_t pid,
> >>  	DBG("got n_subbufs %d", buf->n_subbufs);
> >>  
> >>  	/* get subbuf size */
> >> -	asprintf(&send_msg, "get_subbuf_size %s", buf->name);
> >> +	if(asprintf(&send_msg, "get_subbuf_size %s", buf->name) == -1) {
> >> +		ERR("connect_buffer : asprintf failed (get_subbuf_size %s)",
> >> +				buf->name);
> >> +		return NULL;
> >> +	}
> >>  	result = ustcomm_send_request(buf->conn, send_msg, &received_msg);
> >>  	free(send_msg);
> >>  	if(result == -1) {
> >> diff --git a/tests/hello/hello.c b/tests/hello/hello.c
> >> index 8147860..f58706b 100644
> >> --- a/tests/hello/hello.c
> >> +++ b/tests/hello/hello.c
> >> @@ -77,13 +77,15 @@ int main()
> >>  		usleep(100000);
> >>  	}
> >>  
> >> -	scanf("%*s");
> >> +	if(scanf("%*s") == EOF)
> >> +		PERROR("scanf failed");
> >>  
> >>  	ltt_trace_stop("auto");
> >>  	ltt_trace_destroy("auto", 0);
> >>  
> >>  	DBG("TRACE STOPPED");
> >> -	scanf("%*s");
> >> +	if(scanf("%*s") == EOF)
> >> +		PERROR("scanf failed");
> >>  
> >>  	return 0;
> >>  }
> >> diff --git a/ustd/ustd.c b/ustd/ustd.c
> >> index c0f4c59..f15c31a 100644
> >> --- a/ustd/ustd.c
> >> +++ b/ustd/ustd.c
> >> @@ -191,7 +191,11 @@ int on_open_buffer(struct libustd_callbacks *data, struct buffer_info *buf)
> >>  		trace_path = USTD_DEFAULT_TRACE_PATH;
> >>  	}
> >>  
> >> -	asprintf(&tmp, "%s/%u_%lld", trace_path, buf->pid, buf->pidunique);
> >> +	if(asprintf(&tmp, "%s/%u_%lld", trace_path, buf->pid, buf->pidunique) == -1) {
> >> +		ERR("on_open_buffer : asprintf failed (%s/%u_%lld)",
> >> +				trace_path, buf->pid, buf->pidunique);
> >> +		return 1;
> >> +	}
> >>  	result = create_dir_if_needed(tmp);
> >>  	if(result == -1) {
> >>  		ERR("could not create directory %s", tmp);
> >> @@ -200,7 +204,11 @@ int on_open_buffer(struct libustd_callbacks *data, struct buffer_info *buf)
> >>  	}
> >>  	free(tmp);
> >>  
> >> -	asprintf(&tmp, "%s/%u_%lld/%s", trace_path, buf->pid, buf->pidunique, buf->name);
> >> +	if(asprintf(&tmp, "%s/%u_%lld/%s", trace_path, buf->pid, buf->pidunique, buf->name) == -1) {
> >> +		ERR("on_open_buffer : asprintf failed (%s/%u_%lld/%s)",
> >> +				trace_path, buf->pid, buf->pidunique, buf->name);
> >> +		return 1;
> >> +	}
> >>  	result = fd = open(tmp, O_WRONLY | O_CREAT | O_TRUNC | O_EXCL, 00600);
> >>  	if(result == -1) {
> >>  		PERROR("open");
> >> -- 
> >> 1.7.0.4
> >>
> >>
> >> _______________________________________________
> >> ltt-dev mailing list
> >> ltt-dev at lists.casi.polymtl.ca
> >> http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev
> >>
> > 
> 
> - -- 
> David Goulet
> LTTng project, DORSAL Lab.
> 
> 1024D/16BD8563
> BE3C 672B 9331 9796 291A  14C6 4AF7 C14B 16BD 8563
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.10 (GNU/Linux)
> 
> iEYEARECAAYFAkyBSigACgkQSvfBSxa9hWMnuACfWyswKn8S4v0m3FP6hvV/ag8Z
> Xi8AnR4vCQuFX36IxqmmDMUqT4cdxHJI
> =KMS+
> -----END PGP SIGNATURE-----
> 

-- 
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com




More information about the lttng-dev mailing list