Mirror of the lttng-dev mailing list
 help / color / mirror / Atom feed
* [lttng-dev] [PATCH lttng-ust] Clean-up: remove extraneous "found" parameters in ust-elf
@ 2015-09-21 18:19 Antoine Busque
  2015-09-21 18:28 ` Mathieu Desnoyers
  0 siblings, 1 reply; 2+ messages in thread
From: Antoine Busque @ 2015-09-21 18:19 UTC (permalink / raw)


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




^ permalink raw reply	[flat|nested] 2+ messages in thread

* [lttng-dev] [PATCH lttng-ust] Clean-up: remove extraneous "found" parameters in ust-elf
  2015-09-21 18:19 [lttng-dev] [PATCH lttng-ust] Clean-up: remove extraneous "found" parameters in ust-elf Antoine Busque
@ 2015-09-21 18:28 ` Mathieu Desnoyers
  0 siblings, 0 replies; 2+ messages in thread
From: Mathieu Desnoyers @ 2015-09-21 18:28 UTC (permalink / raw)


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



^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2015-09-21 18:28 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-09-21 18:19 [lttng-dev] [PATCH lttng-ust] Clean-up: remove extraneous "found" parameters in ust-elf Antoine Busque
2015-09-21 18:28 ` Mathieu Desnoyers

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox