src/protocols/icq/udp.c

changeset 2474
439b571db50d
parent 2086
007508451e2c
child 8735
01248ea222d3
--- a/src/protocols/icq/udp.c	Wed Oct 10 18:12:09 2001 +0000
+++ b/src/protocols/icq/udp.c	Wed Oct 10 19:58:11 2001 +0000
@@ -1,7 +1,7 @@
 /* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 
 /*
- * $Id: udp.c 2096 2001-07-31 01:00:39Z warmenhoven $
+ * $Id: udp.c 2487 2001-10-10 19:58:11Z warmenhoven $
  *
  * Copyright (C) 1998-2001, Denis V. Dmitrienko <denis@null.net> and
  *                          Bill Soudan <soudan@kde.org>
@@ -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));
 }
 
 /*********************************************************

mercurial