RE: [PATCH lksctp-tools 1/5] fix memory leak in sctp_status

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Freeing memory before exit() is a waste of time.

(and don't talk to me about calling C++ destructors)

	David

> -----Original Message-----
> From: Qiumiao Zhang <zhangqiumiao1@xxxxxxxxxx>
> Sent: 16 February 2023 11:48
> To: linux-sctp@xxxxxxxxxxxxxxx; marcelo.leitner@xxxxxxxxx
> Cc: zhaowei23@xxxxxxxxxx; caowangbao@xxxxxxxxxx; yanan@xxxxxxxxxx; zhangqiumiao1@xxxxxxxxxx
> Subject: [PATCH lksctp-tools 1/5] fix memory leak in sctp_status
> 
> Signed-off-by: Qiumiao Zhang <zhangqiumiao1@xxxxxxxxxx>
> ---
>  src/apps/sctp_status.c | 15 +++++++++++++++
>  1 file changed, 15 insertions(+)
> 
> diff --git a/src/apps/sctp_status.c b/src/apps/sctp_status.c
> index 7c18ab1..5a52165 100644
> --- a/src/apps/sctp_status.c
> +++ b/src/apps/sctp_status.c
> @@ -266,6 +266,7 @@ int main(int argc, char *argv[]) {
>  		}
>  		if ((serv_s = malloc(NI_MAXSERV)) == NULL) {
>  			fprintf(stderr, "\n*** serv_s malloc failed!!! ***\n");
> +			free(host_s);
>  			exit(1);
>  		}
> 
> @@ -273,6 +274,8 @@ int main(int argc, char *argv[]) {
>  		if (error) {
>  			printf("%s.\n", gai_strerror(error));
>  			usage(argv[0]);
> +			free(host_s);
> +			free(serv_s);
>  			exit(1);
>  		}
> 
> @@ -315,6 +318,8 @@ int main(int argc, char *argv[]) {
>  			    host_s, serv_s, res->ai_family);
> 
>  		freeaddrinfo(res);
> +		free(host_s);
> +		free(serv_s);
>          }
> 
>  	if (local_host != NULL) {
> @@ -330,6 +335,7 @@ int main(int argc, char *argv[]) {
>  		}
>  		if ((serv_s = malloc(NI_MAXSERV)) == NULL) {
>  			fprintf(stderr, "\n*** serv_s malloc failed!!! ***\n");
> +			free(host_s);
>  			exit(1);
>  		}
> 
> @@ -340,6 +346,8 @@ int main(int argc, char *argv[]) {
>  		if (error) {
>  			printf("%s.\n", gai_strerror(error));
>  			usage(argv[0]);
> +			free(host_s);
> +			free(serv_s);
>  			exit(1);
>  		}
> 
> @@ -385,6 +393,8 @@ int main(int argc, char *argv[]) {
>  			    host_s, serv_s, res->ai_family);
> 
>  		freeaddrinfo(res);
> +		free(host_s);
> +		free(serv_s);
>          }
> 
>  	/* Let the testing begin. */
> @@ -403,6 +413,7 @@ int bind_r(int sk, struct sockaddr_storage *saddr) {
>  	}
>  	if ((serv_s = malloc(NI_MAXSERV)) == NULL) {
>  		fprintf(stderr, "\n\t\t*** serv_s malloc failed!!! ***\n");
> +		free(host_s);
>  		exit(1);
>  	}
> 
> @@ -427,6 +438,8 @@ int bind_r(int sk, struct sockaddr_storage *saddr) {
>  				fprintf(stderr, "\n\n\t\t***bind: can "
>  					"not bind to %s:%s: %s ****\n",
>  					host_s, serv_s, strerror(errno));
> +				free(host_s);
> +				free(serv_s);
>  				exit(1);
>  			}
>  		}
> @@ -434,6 +447,8 @@ int bind_r(int sk, struct sockaddr_storage *saddr) {
>  		if (i >= MAX_BIND_RETRYS) {
>  			fprintf(stderr, "Maximum bind() attempts. "
>  				"Die now...\n\n");
> +			free(host_s);
> +			free(serv_s);
>  			exit(1);
>  		}
>  	} while (error < 0 && i < MAX_BIND_RETRYS);
> --
> 2.27.0

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)




[Index of Archives]     [Linux Networking Development]     [Linux OMAP]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     SCTP

  Powered by Linux