- if (nam->m_len + (nam->m_off - MMINOFF) == MLEN)
- return (EMSGSIZE);
- *(mtod(nam, caddr_t) + nam->m_len) = 0;
- ndp->ni_nameiop = LOOKUP | FOLLOW;
+ if (nam->m_data + nam->m_len == &nam->m_dat[MLEN]) { /* XXX */
+ if (*(mtod(nam, caddr_t) + nam->m_len - 1) != 0)
+ return (EMSGSIZE);
+ } else
+ *(mtod(nam, caddr_t) + nam->m_len) = 0;
+ ndp->ni_nameiop = LOOKUP | FOLLOW | LOCKLEAF;