[lttng-dev] [PATCH lttng-ust] Clean-up: remove extraneous "found" parameters in ust-elf

Mathieu Desnoyers mathieu.desnoyers at efficios.com
Mon Sep 21 14:28:17 EDT 2015


merged, thanks!

Mathieu

----- On Sep 21, 2015, at 2:19 PM, Antoine Busque abusque at efficios.com wrote:

> In lttng-ust-elf.c, static functions used to extract build ID or debug
> link information had an extraneous `found` parameter, carrying no more
> information than could be obtained by checking the other out
> parameters against NULL. The resulting simplified logic should also
> prevent static analysis tools from misidentifying resource leaks.
> 
> Signed-off-by: Antoine Busque <abusque at efficios.com>
> ---
> liblttng-ust/lttng-ust-elf.c | 40 +++++++++++++++++-----------------------
> 1 file changed, 17 insertions(+), 23 deletions(-)
> 
> diff --git a/liblttng-ust/lttng-ust-elf.c b/liblttng-ust/lttng-ust-elf.c
> index 4de380c..dcae966 100644
> --- a/liblttng-ust/lttng-ust-elf.c
> +++ b/liblttng-ust/lttng-ust-elf.c
> @@ -405,11 +405,10 @@ error:
> static
> int lttng_ust_elf_get_build_id_from_segment(
> 	struct lttng_ust_elf *elf, uint8_t **build_id, size_t *length,
> -	off_t offset, off_t segment_end, int *found)
> +	off_t offset, off_t segment_end)
> {
> 	uint8_t *_build_id = NULL;	/* Silence old gcc warning. */
> 	size_t _length = 0;		/* Silence old gcc warning. */
> -	int _found = 0;
> 
> 	while (offset < segment_end) {
> 		struct lttng_ust_elf_nhdr nhdr;
> @@ -466,16 +465,14 @@ int lttng_ust_elf_get_build_id_from_segment(
> 			goto error;
> 		}
> 
> -		_found = 1;
> 		break;
> 	}
> 
> -	if (_found) {
> +	if (_build_id) {
> 		*build_id = _build_id;
> 		*length = _length;
> 	}
> 
> -	*found = _found;
> 	return 0;
> error:
> 	free(_build_id);
> @@ -501,7 +498,6 @@ int lttng_ust_elf_get_build_id(struct lttng_ust_elf *elf,
> uint8_t **build_id,
> 	uint16_t i;
> 	uint8_t *_build_id = NULL;	/* Silence old gcc warning. */
> 	size_t _length = 0;		/* Silence old gcc warning. */
> -	int _found = 0;
> 
> 	if (!elf || !build_id || !length || !found) {
> 		goto error;
> @@ -525,24 +521,25 @@ int lttng_ust_elf_get_build_id(struct lttng_ust_elf *elf,
> uint8_t **build_id,
> 		offset = phdr->p_offset;
> 		segment_end = offset + phdr->p_filesz;
> 		ret = lttng_ust_elf_get_build_id_from_segment(
> -			elf, &_build_id, &_length, offset, segment_end,
> -			&_found);
> +			elf, &_build_id, &_length, offset, segment_end);
> 	next_loop:
> 		free(phdr);
> 		if (ret) {
> 			goto error;
> 		}
> -		if (_found) {
> +		if (_build_id) {
> 			break;
> 		}
> 	}
> 
> -	if (_found) {
> +	if (_build_id) {
> 		*build_id = _build_id;
> 		*length = _length;
> +		*found = 1;
> +	} else {
> +		*found = 0;
> 	}
> 
> -	*found = _found;
> 	return 0;
> error:
> 	free(_build_id);
> @@ -561,16 +558,14 @@ error:
>  */
> int lttng_ust_elf_get_debug_link_from_section(struct lttng_ust_elf *elf,
> 					char **filename, uint32_t *crc,
> -					int *found,
> 					struct lttng_ust_elf_shdr *shdr)
> {
> -	int _found = 0;
> 	char *_filename = NULL;		/* Silence old gcc warning. */
> 	size_t filename_len;
> 	char *section_name = NULL;
> 	uint32_t _crc = 0;		/* Silence old gcc warning. */
> 
> -	if (!elf || !filename || !crc || !found || !shdr) {
> +	if (!elf || !filename || !crc || !shdr) {
> 		goto error;
> 	}
> 
> @@ -613,15 +608,12 @@ int lttng_ust_elf_get_debug_link_from_section(struct
> lttng_ust_elf *elf,
> 		_crc = bswap_32(_crc);
> 	}
> 
> -	_found = 1;
> -
> end:
> 	free(section_name);
> -	if (_found) {
> +	if (_filename) {
> 		*filename = _filename;
> 		*crc = _crc;
> 	}
> -	*found = _found;
> 
> 	return 0;
> 
> @@ -646,7 +638,6 @@ int lttng_ust_elf_get_debug_link(struct lttng_ust_elf *elf,
> char **filename,
> {
> 	int ret;
> 	uint16_t i;
> -	int _found = 0;
> 	char *_filename = NULL;		/* Silence old gcc warning. */
> 	uint32_t _crc = 0;		/* Silence old gcc warning. */
> 
> @@ -663,24 +654,27 @@ int lttng_ust_elf_get_debug_link(struct lttng_ust_elf
> *elf, char **filename,
> 		}
> 
> 		ret = lttng_ust_elf_get_debug_link_from_section(
> -			elf, &_filename, &_crc, &_found, shdr);
> +			elf, &_filename, &_crc, shdr);
> 		free(shdr);
> 
> 		if (ret) {
> 			goto error;
> 		}
> -		if (_found) {
> +		if (_filename) {
> 			break;
> 		}
> 	}
> 
> -	if (_found) {
> +	if (_filename) {
> 		*filename = _filename;
> 		*crc = _crc;
> +		*found = 1;
> +	} else {
> +		*found = 0;
> 	}
> 
> -	*found = _found;
> 	return 0;
> +
> error:
> 	free(_filename);
> 	return -1;
> --
> 2.5.3

-- 
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com



More information about the lttng-dev mailing list