diff options
author | gwr <none@none> | 2008-05-26 11:27:50 -0700 |
---|---|---|
committer | gwr <none@none> | 2008-05-26 11:27:50 -0700 |
commit | 7568150a58e78021968b6c22bc28e9787b33496a (patch) | |
tree | 834cd3661c8d4ef83077b9f4d0b54a3d25f6767c /usr/src/lib/libsmbfs/smb/mbuf.c | |
parent | 664d603cda9e909161e63d9ac5ff4724dd2a4852 (diff) | |
download | illumos-gate-7568150a58e78021968b6c22bc28e9787b33496a.tar.gz |
6647735 Need fetch/store ACL support
6707025 The owner and group id display should be unsigned
Diffstat (limited to 'usr/src/lib/libsmbfs/smb/mbuf.c')
-rw-r--r-- | usr/src/lib/libsmbfs/smb/mbuf.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/usr/src/lib/libsmbfs/smb/mbuf.c b/usr/src/lib/libsmbfs/smb/mbuf.c index f03c4fedc3..6f08ce1def 100644 --- a/usr/src/lib/libsmbfs/smb/mbuf.c +++ b/usr/src/lib/libsmbfs/smb/mbuf.c @@ -42,6 +42,7 @@ #include <string.h> #include <strings.h> #include <libintl.h> +#include <assert.h> #include <netsmb/smb.h> #include <netsmb/smb_lib.h> @@ -58,6 +59,8 @@ m_get(size_t len, struct mbuf **mpp) { struct mbuf *m; + assert(len < 0x100000); /* sanity */ + len = M_ALIGN(len); if (len < M_MINSIZE) len = M_MINSIZE; @@ -163,10 +166,13 @@ int m_getm(struct mbuf *top, size_t len, struct mbuf **mpp) { struct mbuf *m, *mp; - int error; + int error, ts; for (mp = top; ; mp = mp->m_next) { - len -= M_TRAILINGSPACE(mp); + ts = M_TRAILINGSPACE(mp); + if (len <= ts) + goto out; + len -= ts; if (mp->m_next == NULL) break; @@ -176,6 +182,7 @@ m_getm(struct mbuf *top, size_t len, struct mbuf **mpp) return (error); mp->m_next = m; } +out: *mpp = top; return (0); } |