diff --git a/maestro/ofi.c b/maestro/ofi.c
index 07ba33064c61f2aead39226b0b283939ed9dafb1..1ab773618ed80139d0772c78b58c4f75bd575318 100644
--- a/maestro/ofi.c
+++ b/maestro/ofi.c
@@ -1211,25 +1211,28 @@ mstro_endpoint_describe(const struct mstro_endpoint *ep)
   char strbuf[EP_DESC_BUF_MAX];
   char addrbuf[EP_DESC_BUF_MAX];
 
-  ep_name_buf[0]='\0';
+  strncpy(ep_name_buf, "(unprintable)", EP_DESC_BUF_MAX);
 
-  size=0;
-  ret = fi_getname(&ep->ep->fid,NULL,&size);
-  if(ret!=-FI_ETOOSMALL) {
+  /* first: fetch address */
+  size=EP_DESC_BUF_MAX;
+  ret = fi_getname(&ep->ep->fid,addrbuf,&size);
+  DEBUG("addrbuf len %zu, ret %d\n", size, ret);
+  if(ret<0 && ret!=-FI_ETOOSMALL) {
     ERR("fi_getname in EP describe failed: %d (%s)\n", ret, fi_strerror(-ret));
     goto DONE;
   }
-  assert(size<EP_DESC_BUF_MAX);
-  fi_getname(&ep->ep->fid,addrbuf,&size);
- 
+
+  /* now translate to string */
+  size = EP_DESC_BUF_MAX;
+  /* may truncate but will 0-terminate the strbuf */
   fi_av_straddr(ep->av, addrbuf, strbuf, &size);
-  assert(size<EP_DESC_BUF_MAX);
+  DEBUG("strbuf len %zu, val %s\n", size, strbuf);
 
   size=snprintf(ep_name_buf, EP_DESC_BUF_MAX,
                 "OFI EP prov %s name %s straddr %s",
                 ep->fi->fabric_attr->prov_name,
                 ep->fi->fabric_attr->name, strbuf);
-  assert(size<1024);
+  assert(size<EP_DESC_BUF_MAX);
 DONE:
   return ep_name_buf;
 }