[1854] in Moira Commits

home help back first fref pref prev next nref lref last post

/svn/moira r4000 - trunk/moira/clients/moira

daemon@ATHENA.MIT.EDU (Garry Zacheiss)
Mon Apr 12 16:43:02 2010

Date: Mon, 12 Apr 2010 16:42:56 -0400
From: Garry Zacheiss <zacheiss@MIT.EDU>
Message-Id: <201004122042.o3CKguAS020159@drugstore.mit.edu>
To: moira-commits@MIT.EDU
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Author: zacheiss
Date: 2010-04-12 16:42:56 -0400 (Mon, 12 Apr 2010)
New Revision: 4000

Modified:
   trunk/moira/clients/moira/cluster.c
Log:
Alas, static buffer, we hardly knew ye.

Modified: trunk/moira/clients/moira/cluster.c
===================================================================
--- trunk/moira/clients/moira/cluster.c	2010-04-12 19:24:03 UTC (rev 3999)
+++ trunk/moira/clients/moira/cluster.c	2010-04-12 20:42:56 UTC (rev 4000)
@@ -217,20 +217,28 @@
 
 /* -------------------- General Functions -------------------- */
 
-static char aliasbuf[BUFSIZ * 2];
+char *aliases = NULL;
 
 void PrintAliases(char **info)
 {
-  if (strlen(aliasbuf) == 0)
-    sprintf(aliasbuf, "Aliases:  %s", info[0]);
+  if (aliases == NULL)
+    {
+      aliases = malloc((strlen("Aliases:  ") + strlen(info[0]) + 1));
+      if (!aliases)
+        {
+          com_err(program_name, 0, "Out of memory allocating host aliases");
+          exit(1);
+        }
+      sprintf(aliases, "Aliases:  %s", info[0]);
+    }
   else
     {
-      strcat(aliasbuf, ", ");
-      strcat(aliasbuf, info[0]);
+      aliases = realloc(aliases, strlen(aliases) + strlen(info[0]) + 3);
+      strcat(aliases, ", ");
+      strcat(aliases, info[0]);
     }
 }
 
-
 /*	Function Name: PrintMachInfo
  *	Description: This function Prints out the Machine info in
  *                   a coherent form.
@@ -257,10 +265,11 @@
     }
   else
     {
-      aliasbuf[0] = 0;
       Loop(QueueTop(elem), (void (*)(char **)) PrintAliases);
       FreeQueue(elem);
-      Put_message(aliasbuf);
+      Put_message(aliases);
+      free(aliases);
+      aliases = NULL;
     }
   sprintf(tbuf, "%s %s", info[M_OWNER_TYPE],
 	  strcmp(info[M_OWNER_TYPE], "NONE") ? info[M_OWNER_NAME] : "");


home help back first fref pref prev next nref lref last post