diff options
author | SUZUKI, Shinsuke <suz@kame.net> | 2007-07-24 15:20:24 +0000 |
---|---|---|
committer | SUZUKI, Shinsuke <suz@kame.net> | 2007-07-24 15:20:24 +0000 |
commit | f83ae55efb963594682fd409fc5a38f612615ef1 (patch) | |
tree | af323c97e228608ee2d79b3260a323224b788dea | |
parent | ec88fbfc413ea9bd11d33766f40cf98f80d6eacc (diff) |
fixed a buffer overrun in sprint_uint64() (Bug-ID 1714648)
-rw-r--r-- | CHANGES | 4 | ||||
-rw-r--r-- | common.c | 9 |
2 files changed, 9 insertions, 4 deletions
@@ -1,3 +1,7 @@ +2007-07-24 SUZUKI, Shinsuke <suz@kame.net> + * common.c: fixed a buffer overrun in sprint_uint64() + (Bug-ID 1714648) + 2007-07-10 SUZUKI, Shinsuke <suz@kame.net> * common.c: fixed a singular-point detection failure in replay check. (Bug-ID 1714644) @@ -2149,11 +2149,12 @@ sprint_uint64(buf, buflen, i64) u_int64_t i64; { u_int16_t rd0, rd1, rd2, rd3; + u_int16_t *ptr = (u_int16_t *)&i64; - rd0 = ntohs(*(u_int16_t *)(void *)&i64); - rd1 = ntohs(*((u_int16_t *)(void *)(&i64 + 1))); - rd2 = ntohs(*((u_int16_t *)(void *)(&i64 + 2))); - rd3 = ntohs(*((u_int16_t *)(void *)(&i64 + 3))); + rd0 = ntohs(*ptr++); + rd1 = ntohs(*ptr++); + rd2 = ntohs(*ptr++); + rd3 = ntohs(*ptr); snprintf(buf, buflen, "%04x %04x %04x %04x", rd0, rd1, rd2, rd3); |