condor_auth_x509.cpp, same
 schedd.cpp, same
 
+{section: Sinful string construction}
+There are some places that construct sinful strings without using wrapper functions.
+
+{code}
+  // shadow_common.cpp
+  char sinfulstring[SINFUL_STRING_BUF_SIZE];
+
+  snprintf(sinfulstring, SINFUL_STRING_BUF_SIZE, "<%s:%d>", sock->peer_ip_str(), ports.port1);
+{endcode}
+
+The caveat is that sinful grammar is changing due to IPv6 address and these are simply incompatible. If the address is IPv6, it should be form of <[%s]:%s>. We need another abstraction layer.
+
 {section: Where to put NODNS?}
 Previously, NODNS is implemented over existing DNS query functions such as condor_gethostbyname, condor_gethostname, and condor_gethostbyaddr.