key is 16 bytes
   t += snprintf(t, end - t, "%llx", (long long unsigned)oid.hobj.snap);
  and 1 + 16 bytes
   t += snprintf(t, end - t, ".%llx", (long long unsigned)oid.hobj.pool);
  and 1 + 8 bytes 
   snprintf(t, end - t, ".%.*X", (int)(sizeof(oid.hobj.hash)*2), oid.hobj.hash);
  and 1 + 16 bytes
   t += snprintf(t, end - t, ".%llx", (long long unsigned)oid.generation);
  and 1 + 2 bytes
   t += snprintf(t, end - t, ".%x", (int)oid.shard_id);
  which is 16+1+16+1+8+1+16+1+2 = 62

  therefore 

  char snap_with_hash[1000];

  is more than enough. Just checking :-)