sim, substring. Você não precisa fazer um Math.min; substring com um índice maior que o comprimento da string termina no comprimento original.
Mas!
document.getElementById("foo").innerHTML = "<a href='" + pathname +"'>" + pathname +"</a>"
Isto é um erro. E se document.referrer tivesse um apóstrofo? Ou vários outros caracteres que têm um significado especial em HTML. Na pior das hipóteses, o código do invasor no referenciador pode injetar JavaScript na sua página, que é uma falha de segurança XSS.
Embora seja possível escapar manualmente dos personagens no nome do caminho para impedir que isso aconteça, é um pouco trabalhoso. É melhor usar métodos DOM do que mexer com strings innerHTML.
if (document.referrer) {
var trimmed= document.referrer.substring(0, 64);
var link= document.createElement('a');
link.href= document.referrer;
link.appendChild(document.createTextNode(trimmed));
document.getElementById('foo').appendChild(link);
}