diff options
author | brian <brian@FreeBSD.org> | 2004-04-17 00:29:17 +0000 |
---|---|---|
committer | brian <brian@FreeBSD.org> | 2004-04-17 00:29:17 +0000 |
commit | 8f1eb09821df19d6b6a08ff5a024611d44be3d11 (patch) | |
tree | 0216a719a2ad1f4b0343aedb5527a108b5b3ee5b /usr.sbin | |
parent | a7a31583b738b898e6e5fc0e113160519768d0b8 (diff) | |
download | FreeBSD-src-8f1eb09821df19d6b6a08ff5a024611d44be3d11.zip FreeBSD-src-8f1eb09821df19d6b6a08ff5a024611d44be3d11.tar.gz |
Add a missing memcpy (*blush*!)
Suggested by: James P Scully <scully@CS.Arizona.EDU>, Perianayagam Somasundaram <somu@CS.Arizona.EDU>
MFC after: 10 days
Diffstat (limited to 'usr.sbin')
-rw-r--r-- | usr.sbin/ppp/mbuf.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/usr.sbin/ppp/mbuf.c b/usr.sbin/ppp/mbuf.c index 5bf8199..0edf1b9 100644 --- a/usr.sbin/ppp/mbuf.c +++ b/usr.sbin/ppp/mbuf.c @@ -248,11 +248,13 @@ m_prepend(struct mbuf *bp, const void *ptr, size_t len, size_t extra) if (bp->m_offset >= len) { bp->m_offset -= len; bp->m_len += len; - memcpy(MBUF_CTOP(bp), ptr, len); + if (ptr) + memcpy(MBUF_CTOP(bp), ptr, len); return bp; } len -= bp->m_offset; - memcpy(bp + 1, (const char *)ptr + len, bp->m_offset); + if (ptr) + memcpy(bp + 1, (const char *)ptr + len, bp->m_offset); bp->m_len += bp->m_offset; bp->m_offset = 0; } @@ -425,9 +427,11 @@ m_append(struct mbuf *bp, const void *v, size_t sz) if (m) { while (m->m_next) m = m->m_next; - if (m->m_size - m->m_len > sz) + if (m->m_size - m->m_len >= sz) { + if (v) + memcpy((char *)(m + 1) + m->m_len, v, sz); m->m_len += sz; - else + } else m->m_next = m_prepend(NULL, v, sz, 0); } else bp = m_prepend(NULL, v, sz, 0); |