summaryrefslogtreecommitdiff
path: root/usr/src/lib/libsmbfs/smb/mbuf.c
diff options
context:
space:
mode:
authorgwr <none@none>2008-05-26 11:27:50 -0700
committergwr <none@none>2008-05-26 11:27:50 -0700
commit7568150a58e78021968b6c22bc28e9787b33496a (patch)
tree834cd3661c8d4ef83077b9f4d0b54a3d25f6767c /usr/src/lib/libsmbfs/smb/mbuf.c
parent664d603cda9e909161e63d9ac5ff4724dd2a4852 (diff)
downloadillumos-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.c11
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);
}