[PATCH] ul: fix memory leak

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

 



>From f75b9fbeb52ba64d80779280d040d47d63e01e76 Mon Sep 17 00:00:00 2001
From: Davidlohr Bueso <dave@xxxxxxx>
Date: Sun, 29 Aug 2010 22:03:32 -0400
Subject: [PATCH] ul: fix memory leak.

The 'obuf' variable is not being freed after usage and this includes
when SIGINTs occur, hence add some basic signal handling.

Signed-off-by: Davidlohr Bueso <dave@xxxxxxx>
---
 text-utils/ul.c |   23 ++++++++++++++++++++++-
 1 files changed, 22 insertions(+), 1 deletions(-)

diff --git a/text-utils/ul.c b/text-utils/ul.c
index a1491b8..354926e 100644
--- a/text-utils/ul.c
+++ b/text-utils/ul.c
@@ -46,6 +46,7 @@
 #include <term.h>		/* for setupterm() */
 #include <stdlib.h>		/* for getenv() */
 #include <limits.h>		/* for INT_MAX */
+#include <signal.h>             /* for signal() */
 #include "nls.h"
 
 #include "widechar.h"
@@ -75,6 +76,8 @@ void outc(wint_t c, int width);
 void setmode(int newmode);
 static void setcol(int newcol);
 static void needcol(int col);
+static void exitbuf(void);
+static void sig_handler(int signo);
 
 #define	IESC	'\033'
 #define	SO	'\016'
@@ -122,6 +125,9 @@ int main(int argc, char **argv)
 	bindtextdomain(PACKAGE, LOCALEDIR);
 	textdomain(PACKAGE);
 
+	signal(SIGINT, sig_handler);
+	signal(SIGTERM, sig_handler);
+
 	termtype = getenv("TERM");
 	if (termtype == NULL || (argv[0][0] == 'c' && !isatty(1)))
 		termtype = "lpr";
@@ -168,12 +174,16 @@ int main(int argc, char **argv)
 		f = fopen(argv[optind],"r");
 		if (f == NULL) {
 			perror(argv[optind]);
+			exitbuf();
 			exit(1);
 		} else
 			filter(f);
 	}
-	if (ferror(stdout) || fclose(stdout))
+	if (ferror(stdout) || fclose(stdout)) {
+		exitbuf();
 		return 1;
+	}
+	exitbuf();
 	return 0;
 }
 
@@ -601,3 +611,14 @@ needcol(int col) {
 		}
 	}
 }
+
+static void sig_handler(int signo)
+{
+	exitbuf();
+	exit(EXIT_SUCCESS);
+}
+
+static void exitbuf(void)
+{
+	if (obuf) free(obuf);
+}
-- 
1.7.0.4

--
To unsubscribe from this list: send the line "unsubscribe util-linux-ng" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux