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

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

 



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




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

  Powered by Linux