diff options
author | Marcel Moolenaar <marcel@FreeBSD.org> | 2006-08-22 03:05:51 +0000 |
---|---|---|
committer | Marcel Moolenaar <marcel@FreeBSD.org> | 2006-08-22 03:05:51 +0000 |
commit | a6a4232f9685ce47c935742f9f8ba242da7425b1 (patch) | |
tree | f59a8d47cd3eea7ae8f95993d421a9c9abb63d64 /sys/netsmb/smb_rq.c | |
parent | c68ea28fe143dfeb6aad5cdc58bb9c9f5ea47d56 (diff) | |
download | src-a6a4232f9685ce47c935742f9f8ba242da7425b1.tar.gz src-a6a4232f9685ce47c935742f9f8ba242da7425b1.zip |
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
Notes
Notes:
svn path=/head/; revision=161523
Diffstat (limited to 'sys/netsmb/smb_rq.c')
-rw-r--r-- | sys/netsmb/smb_rq.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/netsmb/smb_rq.c b/sys/netsmb/smb_rq.c index 7099645be59b..fb7e5d55d8fd 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 |