Update of /cvsroot/gaim/gaim/src/protocols/icq
In directory usw-pr-cvs1:/tmp/cvs-serv3559/src/protocols/icq
Modified Files:
icqpacket.c udp.c
Log Message:
thanks Nathan Walp and Ben Miller
Index: icqpacket.c
===================================================================
RCS file: /cvsroot/gaim/gaim/src/protocols/icq/icqpacket.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- icqpacket.c 2001/07/31 01:00:38 1.1
+++ icqpacket.c 2001/10/10 19:58:11 1.2
@@ -59,7 +59,8 @@
{
DWORD val=i;
- *(unsigned long*)((p->data)+(p->cursor))=htoicql(val);
+ val = htoicql(val);
+ memcpy((p->data)+(p->cursor),&val,sizeof(DWORD));
icq_PacketAdvance(p, sizeof(DWORD));
}
@@ -67,7 +68,7 @@
{
DWORD val=i;
- *(DWORD *)((p->data)+(p->cursor)) = val;
+ memcpy((p->data)+(p->cursor),&val,sizeof(DWORD));
icq_PacketAdvance(p, sizeof(DWORD));
}
@@ -75,7 +76,8 @@
{
DWORD val;
- val = icqtohl(*(DWORD *)((p->data)+(p->cursor)));
+ memcpy(&val,(p->data)+(p->cursor),sizeof(DWORD));
+ val = icqtohl(val);
icq_PacketAdvance(p, sizeof(DWORD));
return val;
@@ -85,7 +87,7 @@
{
DWORD val;
- val = *(DWORD*)((p->data)+(p->cursor));
+ memcpy(&val,(p->data)+(p->cursor),sizeof(DWORD));
icq_PacketAdvance(p, sizeof(DWORD));
return val;
@@ -95,7 +97,8 @@
{
WORD val=i;
- *(WORD *)((p->data)+(p->cursor)) = htoicqs(val);
+ val = htoicqs(val);
+ memcpy((p->data)+(p->cursor),&val,sizeof(WORD));
icq_PacketAdvance(p, sizeof(WORD));
}
@@ -103,7 +106,7 @@
{
WORD val=i;
- *(WORD *)((p->data)+(p->cursor)) = val;
+ memcpy((p->data)+(p->cursor),&val,sizeof(WORD));
icq_PacketAdvance(p, sizeof(WORD));
}
@@ -111,7 +114,8 @@
{
WORD val;
- val = icqtohs(*(WORD *)((p->data)+(p->cursor)));
+ memcpy(&val,(p->data)+(p->cursor),sizeof(WORD));
+ val = icqtohs(val);
icq_PacketAdvance(p, sizeof(WORD));
return val;
@@ -121,7 +125,7 @@
{
WORD val;
- val = *(WORD*)((p->data)+(p->cursor));
+ memcpy(&val,(p->data)+(p->cursor),sizeof(WORD));
icq_PacketAdvance(p, sizeof(WORD));
return val;
Index: udp.c
===================================================================
RCS file: /cvsroot/gaim/gaim/src/protocols/icq/udp.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- udp.c 2001/07/31 01:00:38 1.1
+++ udp.c 2001/10/10 19:58:11 1.2
@@ -108,23 +108,29 @@
DWORD checkcode = icq_UDPCalculateCheckCode(p);
DWORD code1, code2, code3;
DWORD pos;
+ DWORD tmp;
memcpy(buffer, p->data, p->length);
- *(DWORD *)(buffer+0x14)=htoicql(checkcode);
+ tmp = htoicql(checkcode);
+ memcpy((buffer+0x14),&tmp,sizeof(DWORD));
code1 = p->length * 0x68656c6cL;
code2 = code1 + checkcode;
pos = 0x0A;
for(; pos < p->length; pos+=4)
{
- DWORD data = icqtohl(*(DWORD *)((p->data)+pos));
+ DWORD data;
+ memcpy(&data, (p->data)+pos, sizeof(DWORD));
+ data = icqtohl(data);
code3 = code2 + icq_UDPTable[pos & 0xFF];
data ^= code3;
- *(DWORD*)(buffer+pos)=htoicql(data);
+ data = htoicql(data);
+ memcpy((buffer+pos),&data,sizeof(DWORD));
}
checkcode = icq_UDPScramble(checkcode);
- *(DWORD *)(buffer+0x14)=htoicql(checkcode);
+ tmp = htoicql(checkcode);
+ memcpy((buffer+0x14),&tmp,sizeof(DWORD));
}
/*********************************************************
|