diff --git a/bgpd/ChangeLog b/bgpd/ChangeLog
index 93dc8c3..6bee4de 100644
--- a/bgpd/ChangeLog
+++ b/bgpd/ChangeLog
@@ -1,3 +1,16 @@
+2005-01-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+	* bgp_filter.c: (ip_as_path,no_ip_as_path) Use argv_concat instead
+	  of buffer_getstr.
+	* bgp_route.c: (bgp_show_regexp) Fix memory leak: need to free string
+	  returned by buffer_getstr.
+	  (bgp_show_community) Must use XFREE instead of free on string
+	  returned by buffer_getstr.
+	* bgp_routemap.c: (set_community) Must use XFREE instead of free
+	  on string returned by buffer_getstr.
+	* bgp_vty.c: (neighbor_description) Use argv_concat instead of
+	  buffer_getstr.
+
 2005-01-24 Hasso Tepper <hasso at quagga.net>
 
 	* bgp_route.c: Fix showstopper bug. New route must be selected also
diff --git a/bgpd/bgp_filter.c b/bgpd/bgp_filter.c
index 09dcc0f..2f43cd0 100644
--- a/bgpd/bgp_filter.c
+++ b/bgpd/bgp_filter.c
@@ -446,10 +446,7 @@
   struct as_filter *asfilter;
   struct as_list *aslist;
   regex_t *regex;
-  struct buffer *b;
-  int i;
   char *regstr;
-  int first = 0;
 
   /* Check the filter type. */
   if (strncmp (argv[1], "p", 1) == 0)
@@ -463,25 +460,12 @@
     }
 
   /* Check AS path regex. */
-  b = buffer_new (1024);
-  for (i = 2; i < argc; i++)
-    {
-      if (first)
-	buffer_putc (b, ' ');
-      else
-	first = 1;
-
-      buffer_putstr (b, argv[i]);
-    }
-  buffer_putc (b, '\0');
-
-  regstr = buffer_getstr (b);
-  buffer_free (b);
+  regstr = argv_concat(argv, argc, 2);
 
   regex = bgp_regcomp (regstr);
   if (!regex)
     {
-      free (regstr);
+      XFREE (MTYPE_TMP, regstr);
       vty_out (vty, "can't compile regexp %s%s", argv[0],
 	       VTY_NEWLINE);
       return CMD_WARNING;
@@ -489,7 +473,7 @@
 
   asfilter = as_filter_make (regex, regstr, type);
   
-  free (regstr);
+  XFREE (MTYPE_TMP, regstr);
 
   /* Install new filter to the access_list. */
   aslist = as_list_get (argv[0]);
@@ -518,9 +502,6 @@
   enum as_filter_type type;
   struct as_filter *asfilter;
   struct as_list *aslist;
-  struct buffer *b;
-  int i;
-  int first = 0;
   char *regstr;
   regex_t *regex;
 
@@ -545,25 +526,12 @@
     }
   
   /* Compile AS path. */
-  b = buffer_new (1024);
-  for (i = 2; i < argc; i++)
-    {
-      if (first)
-	buffer_putc (b, ' ');
-      else
-	first = 1;
-
-      buffer_putstr (b, argv[i]);
-    }
-  buffer_putc (b, '\0');
-
-  regstr = buffer_getstr (b);
-  buffer_free (b);
+  regstr = argv_concat(argv, argc, 2);
 
   regex = bgp_regcomp (regstr);
   if (!regex)
     {
-      free (regstr);
+      XFREE (MTYPE_TMP, regstr);
       vty_out (vty, "can't compile regexp %s%s", argv[0],
 	       VTY_NEWLINE);
       return CMD_WARNING;
@@ -572,7 +540,7 @@
   /* Lookup asfilter. */
   asfilter = as_filter_lookup (aslist, regstr, type);
 
-  free (regstr);
+  XFREE (MTYPE_TMP, regstr);
   bgp_regex_free (regex);
 
   if (asfilter == NULL)
diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c
index 849cc44..40a61b6 100644
--- a/bgpd/bgp_route.c
+++ b/bgpd/bgp_route.c
@@ -6136,6 +6136,7 @@
   buffer_free (b);
 
   regex = bgp_regcomp (regstr);
+  XFREE(MTYPE_TMP, regstr);
   if (! regex)
     {
       vty_out (vty, "Can't compile regexp %s%s", argv[0],
@@ -6712,7 +6713,7 @@
   buffer_free (b);
 
   com = community_str2com (str);
-  free (str);
+  XFREE (MTYPE_TMP, str);
   if (! com)
     {
       vty_out (vty, "%% Community malformed: %s", VTY_NEWLINE);
diff --git a/bgpd/bgp_routemap.c b/bgpd/bgp_routemap.c
index e2ad5e0..7674005 100644
--- a/bgpd/bgp_routemap.c
+++ b/bgpd/bgp_routemap.c
@@ -2846,7 +2846,7 @@
   if (str)
     {
       com = community_str2com (str);
-      free (str);
+      XFREE (MTYPE_TMP, str);
     }
 
   /* Can't compile user input into communities attribute.  */
diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c
index 027b8ca..5968f68 100644
--- a/bgpd/bgp_vty.c
+++ b/bgpd/bgp_vty.c
@@ -28,6 +28,7 @@
 #include "stream.h"
 #include "thread.h"
 #include "log.h"
+#include "memory.h"
 
 #include "bgpd/bgpd.h"
 #include "bgpd/bgp_attr.h"
@@ -2576,9 +2577,7 @@
        "Up to 80 characters describing this neighbor\n")
 {
   struct peer *peer;
-  struct buffer *b;
   char *str;
-  int i;
 
   peer = peer_and_group_lookup_vty (vty, argv[0]);
   if (! peer)
@@ -2587,21 +2586,11 @@
   if (argc == 1)
     return CMD_SUCCESS;
 
-  /* Make string from buffer.  This function should be provided by
-     buffer.c. */
-  b = buffer_new (1024);
-  for (i = 1; i < argc; i++)
-    {
-      buffer_putstr (b, argv[i]);
-      buffer_putc (b, ' ');
-    }
-  buffer_putc (b, '\0');
-  str = buffer_getstr (b);
-  buffer_free (b);
+  str = argv_concat(argv, argc, 1);
 
   peer_description_set (peer, str);
 
-  free (str);
+  XFREE (MTYPE_TMP, str);
 
   return CMD_SUCCESS;
 }
diff --git a/lib/ChangeLog b/lib/ChangeLog
index 7955f09..34dad16 100644
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -1,3 +1,14 @@
+2005-01-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+	* buffer.h: Fix comment on buffer_getstr to reflect that it now
+	  uses XMALLOC.
+	* buffer.c: (buffer_getstr) Use XMALLOC(MTYPE_TMP) instead of malloc.
+	* filter.c: (access_list_remark,ipv6_access_list_remark) Use
+	  argv_concat instead of buffer_getstr.
+	* if.c: (interface_desc) Use argv_concat instead of buffer_getstr.
+	* plist.c: (ip_prefix_list_description,ipv6_prefix_list_description)
+	  Use argv_concat instead of buffer_getstr.
+
 2005-01-28 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
 
 	* lib/buffer.h: Document behavior of buffer_getstr function.
diff --git a/lib/buffer.c b/lib/buffer.c
index 60048bc..8666ab7 100644
--- a/lib/buffer.c
+++ b/lib/buffer.c
@@ -95,7 +95,7 @@
 
   for (data = b->head; data; data = data->next)
     totlen += data->cp - data->sp;
-  if (!(s = malloc(totlen+1)))
+  if (!(s = XMALLOC(MTYPE_TMP, totlen+1)))
     return NULL;
   p = s;
   for (data = b->head; data; data = data->next)
diff --git a/lib/buffer.h b/lib/buffer.h
index c3787d7..c0245a7 100644
--- a/lib/buffer.h
+++ b/lib/buffer.h
@@ -67,10 +67,9 @@
 void buffer_free (struct buffer *);
 
 /* Combine all accumulated (and unflushed) data inside the buffer into a
-   single NUL-terminated string allocated using malloc (N.B. should be changed
-   to use XMALLOC(MTYPE_TMP)).  Note that this function does not alter
-   the state of the buffer, so the data is still inside waiting to be
-   flushed. */
+   single NUL-terminated string allocated using XMALLOC(MTYPE_TMP).  Note
+   that this function does not alter the state of the buffer, so the data
+   is still inside waiting to be flushed. */
 char *buffer_getstr (struct buffer *);
 
 int buffer_putc (struct buffer *, u_char);
diff --git a/lib/filter.c b/lib/filter.c
index 9817c07..0dd7a77 100644
--- a/lib/filter.c
+++ b/lib/filter.c
@@ -1359,8 +1359,6 @@
        "Comment up to 100 characters\n")
 {
   struct access_list *access;
-  struct buffer *b;
-  int i;
 
   access = access_list_get (AFI_IP, argv[0]);
 
@@ -1369,19 +1367,7 @@
       XFREE (MTYPE_TMP, access->remark);
       access->remark = NULL;
     }
-
-  /* Below is remark get codes. */
-  b = buffer_new (1024);
-  for (i = 1; i < argc; i++)
-    {
-      buffer_putstr (b, argv[i]);
-      buffer_putc (b, ' ');
-    }
-  buffer_putc (b, '\0');
-
-  access->remark = buffer_getstr (b);
-
-  buffer_free (b);
+  access->remark = argv_concat(argv, argc, 1);
 
   return CMD_SUCCESS;
 }
@@ -1541,8 +1527,6 @@
        "Comment up to 100 characters\n")
 {
   struct access_list *access;
-  struct buffer *b;
-  int i;
 
   access = access_list_get (AFI_IP6, argv[0]);
 
@@ -1551,19 +1535,7 @@
       XFREE (MTYPE_TMP, access->remark);
       access->remark = NULL;
     }
-
-  /* Below is remark get codes. */
-  b = buffer_new (1024);
-  for (i = 1; i < argc; i++)
-    {
-      buffer_putstr (b, argv[i]);
-      buffer_putc (b, ' ');
-    }
-  buffer_putc (b, '\0');
-
-  access->remark = buffer_getstr (b);
-
-  buffer_free (b);
+  access->remark = argv_concat(argv, argc, 1);
 
   return CMD_SUCCESS;
 }
diff --git a/lib/if.c b/lib/if.c
index c7ced18..7385ff6 100644
--- a/lib/if.c
+++ b/lib/if.c
@@ -453,27 +453,15 @@
        "Interface specific description\n"
        "Characters describing this interface\n")
 {
-  int i;
   struct interface *ifp;
-  struct buffer *b;
 
   if (argc == 0)
     return CMD_SUCCESS;
 
   ifp = vty->index;
   if (ifp->desc)
-    XFREE (0, ifp->desc);
-
-  b = buffer_new (1024);
-  for (i = 0; i < argc; i++)
-    {
-      buffer_putstr (b, argv[i]);
-      buffer_putc (b, ' ');
-    }
-  buffer_putc (b, '\0');
-
-  ifp->desc = buffer_getstr (b);
-  buffer_free (b);
+    XFREE (MTYPE_TMP, ifp->desc);
+  ifp->desc = argv_concat(argv, argc, 0);
 
   return CMD_SUCCESS;
 }
diff --git a/lib/plist.c b/lib/plist.c
index 3520f82..5e2edd2 100644
--- a/lib/plist.c
+++ b/lib/plist.c
@@ -1561,8 +1561,6 @@
        "Up to 80 characters describing this prefix-list\n")
 {
   struct prefix_list *plist;
-  struct buffer *b;
-  int i;
 
   plist = prefix_list_get (AFI_IP, argv[0]);
   
@@ -1571,19 +1569,7 @@
       XFREE (MTYPE_TMP, plist->desc);
       plist->desc = NULL;
     }
-
-  /* Below is description get codes. */
-  b = buffer_new (1024);
-  for (i = 1; i < argc; i++)
-    {
-      buffer_putstr (b, argv[i]);
-      buffer_putc (b, ' ');
-    }
-  buffer_putc (b, '\0');
-
-  plist->desc = buffer_getstr (b);
-
-  buffer_free (b);
+  plist->desc = argv_concat(argv, argc, 1);
 
   return CMD_SUCCESS;
 }       
@@ -2171,8 +2157,6 @@
        "Up to 80 characters describing this prefix-list\n")
 {
   struct prefix_list *plist;
-  struct buffer *b;
-  int i;
 
   plist = prefix_list_get (AFI_IP6, argv[0]);
   
@@ -2181,19 +2165,7 @@
       XFREE (MTYPE_TMP, plist->desc);
       plist->desc = NULL;
     }
-
-  /* Below is description get codes. */
-  b = buffer_new (1024);
-  for (i = 1; i < argc; i++)
-    {
-      buffer_putstr (b, argv[i]);
-      buffer_putc (b, ' ');
-    }
-  buffer_putc (b, '\0');
-
-  plist->desc = buffer_getstr (b);
-
-  buffer_free (b);
+  plist->desc = argv_concat(argv, argc, 1);
 
   return CMD_SUCCESS;
 }       
