summaryrefslogtreecommitdiffstats
path: root/sys/netsmb/smb_rq.c
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2006-08-22 03:05:51 +0000
committermarcel <marcel@FreeBSD.org>2006-08-22 03:05:51 +0000
commit6723c51456f91f4ff5b61a01bcdf421bfa465a61 (patch)
treef59a8d47cd3eea7ae8f95993d421a9c9abb63d64 /sys/netsmb/smb_rq.c
parentf39fbdd70545e5a375029d7c59616b06ef675023 (diff)
downloadFreeBSD-src-6723c51456f91f4ff5b61a01bcdf421bfa465a61.zip
FreeBSD-src-6723c51456f91f4ff5b61a01bcdf421bfa465a61.tar.gz
Fix misalignment bugs caused by invalid type casts of pointers
returned by md_reserve(). Space reserved by mb_reserve() is byte aligned and need to be used in conjunction with le16enc() and le32enc(). Tested on: ia64
Diffstat (limited to 'sys/netsmb/smb_rq.c')
-rw-r--r--sys/netsmb/smb_rq.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/netsmb/smb_rq.c b/sys/netsmb/smb_rq.c
index 7099645..fb7e5d5 100644
--- a/sys/netsmb/smb_rq.c
+++ b/sys/netsmb/smb_rq.c
@@ -141,9 +141,9 @@ smb_rq_new(struct smb_rq *rqp, u_char cmd)
rqp->sr_rqsig = (u_int8_t *)mb_reserve(mbp, 8);
mb_put_uint16le(mbp, 0);
}
- rqp->sr_rqtid = (u_int16_t*)mb_reserve(mbp, sizeof(u_int16_t));
+ rqp->sr_rqtid = mb_reserve(mbp, sizeof(u_int16_t));
mb_put_uint16le(mbp, 1 /*scred->sc_p->p_pid & 0xffff*/);
- rqp->sr_rquid = (u_int16_t*)mb_reserve(mbp, sizeof(u_int16_t));
+ rqp->sr_rquid = mb_reserve(mbp, sizeof(u_int16_t));
mb_put_uint16le(mbp, rqp->sr_mid);
return 0;
}
@@ -239,7 +239,7 @@ smb_rq_wend(struct smb_rq *rqp)
void
smb_rq_bstart(struct smb_rq *rqp)
{
- rqp->sr_bcount = (u_short*)mb_reserve(&rqp->sr_rq, sizeof(u_short));
+ rqp->sr_bcount = mb_reserve(&rqp->sr_rq, sizeof(u_short));
rqp->sr_rq.mb_count = 0;
}
@@ -255,7 +255,7 @@ smb_rq_bend(struct smb_rq *rqp)
bcnt = rqp->sr_rq.mb_count;
if (bcnt > 0xffff)
SMBERROR("byte count too large (%d)\n", bcnt);
- *rqp->sr_bcount = htole16(bcnt);
+ le16enc(rqp->sr_bcount, bcnt);
}
int
OpenPOWER on IntegriCloud