diff --git a/src/net/detail/network-monitor-impl-osx.cpp b/src/net/detail/network-monitor-impl-osx.cpp
index da162d3..16b32bb 100644
--- a/src/net/detail/network-monitor-impl-osx.cpp
+++ b/src/net/detail/network-monitor-impl-osx.cpp
@@ -63,7 +63,9 @@
 #include <net/if_dl.h>     // for struct sockaddr_dl
 #include <net/if_types.h>  // for IFT_* constants
 
-#include <boost/asio.hpp>
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/ip/address.hpp>
+#include <boost/asio/ip/udp.hpp>
 
 namespace ndn {
 namespace net {
@@ -197,19 +199,23 @@
 }
 
 static std::string
-convertToStdString(CFStringRef cfString)
+convertToStdString(CFStringRef cfStr)
 {
-  const char* cStr = CFStringGetCStringPtr(cfString, kCFStringEncodingASCII);
+  const char* cStr = CFStringGetCStringPtr(cfStr, kCFStringEncodingASCII);
   if (cStr != nullptr) {
+    // fast path
     return cStr;
   }
 
-  size_t stringSize = CFStringGetLength(cfString);
-  char* buffer = new char[stringSize + 1];
-  CFStringGetCString(cfString, buffer, sizeof(buffer), kCFStringEncodingASCII);
-  std::string retval = buffer;
-  delete[] buffer;
-  return retval;
+  // reserve space for the string + null terminator
+  std::string str(CFStringGetLength(cfStr) + 1, '\0');
+  if (!CFStringGetCString(cfStr, &str.front(), str.size(), kCFStringEncodingASCII)) {
+    BOOST_THROW_EXCEPTION(NetworkMonitorImplOsx::Error("CFString conversion failed"));
+  }
+
+  // drop the null terminator, std::string doesn't need it
+  str.pop_back();
+  return str;
 }
 
 std::set<std::string>
diff --git a/tests/integrated/network-monitor.cpp b/tests/integrated/network-monitor.cpp
index eb23e5b..45cb57b 100644
--- a/tests/integrated/network-monitor.cpp
+++ b/tests/integrated/network-monitor.cpp
@@ -1,5 +1,5 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
+/*
  * Copyright (c) 2013-2017 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
@@ -27,9 +27,9 @@
 
 #include "net/network-address.hpp"
 #include "net/network-interface.hpp"
-#include "util/time.hpp"
-
 #include "net/detail/link-type-helper.hpp"
+#include "util/string-helper.hpp"
+#include "util/time.hpp"
 
 #include "boost-test.hpp"
 
@@ -56,7 +56,7 @@
   boost::asio::io_service io;
   NetworkMonitor monitor(io);
 
-  std::cout << "capabilities=" << monitor.getCapabilities() << std::endl;
+  std::cout << "capabilities=" << AsHex{monitor.getCapabilities()} << std::endl;
 
   monitor.onNetworkStateChanged.connect([] {
     logEvent() << "onNetworkStateChanged" << std::endl;
@@ -71,7 +71,7 @@
 
   monitor.onInterfaceAdded.connect([] (const shared_ptr<const NetworkInterface>& ni) {
     logEvent(ni) << "onInterfaceAdded\n" << *ni;
-    logEvent(ni) << "link-type: " << detail::getLinkType(ni->getName()) << "\n";
+    logEvent(ni) << "link-type: " << detail::getLinkType(ni->getName()) << std::endl;
 
     ni->onAddressAdded.connect([ni] (const NetworkAddress& address) {
       logEvent(ni) << "onAddressAdded " << address << std::endl;
@@ -83,7 +83,7 @@
 
     ni->onStateChanged.connect([ni] (InterfaceState oldState, InterfaceState newState) {
       logEvent(ni) << "onStateChanged " << oldState << " -> " << newState << std::endl;
-      logEvent(ni) << "link-type: " << detail::getLinkType(ni->getName()) << "\n";
+      logEvent(ni) << "link-type: " << detail::getLinkType(ni->getName()) << std::endl;
     });
 
     ni->onMtuChanged.connect([ni] (uint32_t oldMtu, uint32_t newMtu) {
