Create and use xasprintf akin to xmalloc, returns pointer on success or exits on...
authorKen Raeburn <raeburn@mit.edu>
Thu, 12 Jul 2007 23:35:09 +0000 (23:35 +0000)
committerKen Raeburn <raeburn@mit.edu>
Thu, 12 Jul 2007 23:35:09 +0000 (23:35 +0000)
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@19708 dc483132-0cff-0310-8789-dd5450dbe970

src/clients/ksu/authorization.c
src/clients/ksu/xmalloc.c

index 09a67b976821f3c1c2833918b31b64792163426f..b5713c103e48a3c18420f64d257dae50e562a6f6 100644 (file)
@@ -349,7 +349,6 @@ krb5_boolean fcmd_resolve(fcmd, out_fcmd, out_err)
     char ***out_fcmd;
     char **out_err;
 {
-    char * out_path;
     char * err;
     char ** tmp_fcmd;
     char * path_ptr, *path;
@@ -402,10 +401,7 @@ krb5_boolean fcmd_resolve(fcmd, out_fcmd, out_err)
                return FALSE;
            }
 
-           out_path = (char *) xmalloc(strlen(tc) + strlen(fcmd) + 2);
-           sprintf(out_path,"%s/%s",tc, fcmd );
-
-           tmp_fcmd[i] = out_path;
+           tmp_fcmd[i] = xasprintf("%s/%s", tc, fcmd);
 
            i++;
 
index 425b44f0e9da975f1936a93560a19ddafe663a31..44bdca16d0d136960fdcde368eb087717fdac2b2 100644 (file)
@@ -28,6 +28,8 @@
  */
 
 #include "ksu.h"
+#include <stdarg.h>
+#include "k5-platform.h"
 
 void *xmalloc (size_t sz)
 {
@@ -66,3 +68,17 @@ char *xstrdup (const char *src)
     memcpy (dst, src, len);
     return dst;
 }
+
+char *xasprintf (const char *format, ...)
+{
+    char *out;
+    va_list args;
+
+    va_start (args, format);
+    if (vasprintf(&out, format, args) < 0) {
+       perror (prog_name);
+       exit (1);
+    }
+    va_end(args);
+    return out;
+}