[PATCH:rgb] Use asprintf() instead of malloc/strcpy/strcat, if its available

Alan Coopersmith alan.coopersmith at oracle.com
Sat Oct 25 10:32:11 PDT 2014


Signed-off-by: Alan Coopersmith <alan.coopersmith at oracle.com>
---
 configure.ac |    3 +++
 showrgb.c    |    7 +++++++
 2 files changed, 10 insertions(+)

diff --git a/configure.ac b/configure.ac
index 534e41d..bf7974a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -27,6 +27,7 @@ AC_INIT([rgb], [1.0.5],
 	[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [rgb])
 AC_CONFIG_SRCDIR([Makefile.am])
 AC_CONFIG_HEADERS([config.h])
+AC_USE_SYSTEM_EXTENSIONS
 
 # Initialize Automake
 AM_INIT_AUTOMAKE([foreign dist-bzip2])
@@ -37,6 +38,8 @@ m4_ifndef([XORG_MACROS_VERSION],
 XORG_MACROS_VERSION(1.8)
 XORG_DEFAULT_OPTIONS
 
+AC_CHECK_FUNCS([asprintf])
+
 PKG_CHECK_MODULES(RGB, xproto)
 
 AC_MSG_CHECKING([for rgb database location])
diff --git a/showrgb.c b/showrgb.c
index 31936ea..4796c5a 100644
--- a/showrgb.c
+++ b/showrgb.c
@@ -124,9 +124,16 @@ dumprgb (const char *filename)
     int lineno = 0;
     int red, green, blue;
 
+#ifdef HAVE_ASPRINTF
+    if (asprintf(&path, "%s.txt", filename) == -1) {
+        perror (ProgramName);
+        exit (1);
+    }
+#else
     path = (char *)malloc(strlen(filename) + 5);
     strcpy(path, filename);
     strcat(path, ".txt");
+#endif
 
     if (!(rgb = fopen(path, "r"))) {
 	fprintf (stderr, "%s:  unable to open rgb database \"%s\"\n",
-- 
1.7.9.2



More information about the xorg-devel mailing list