]> andersk Git - libfaim.git/commitdiff
- Tue Oct 17 02:10:13 UTC 2000
authormid <mid>
Tue, 17 Oct 2000 02:19:01 +0000 (02:19 +0000)
committermid <mid>
Tue, 17 Oct 2000 02:19:01 +0000 (02:19 +0000)
  - Rearrange a few things

CHANGES
aim_info.c
aim_tlv.c

diff --git a/CHANGES b/CHANGES
index 36d6d555e473a7f5960fd93194d06d8bc3a75e96..9a053a2a08e6c7621d26f599f1c7dfcc2604c2e6 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,9 @@
 
 No release numbers
 ------------------
+ - Tue Oct 17 02:10:13 UTC 2000
+  - Rearrange a few things
+
  - Mon Oct 16 20:56:59 UTC 2000
   - Remove some warnings
 
index 0e6ada24f16f73e860207776c207dc1275d02bbe..0abbcf5db9907b1bb332bf2eba606e36b7e55ec1 100644 (file)
@@ -581,7 +581,7 @@ faim_internal int aim_parse_userinfo_middle(struct aim_session_t *sess,
  */
 faim_internal int aim_putuserinfo(u_char *buf, int buflen, struct aim_userinfo_s *info)
 {
-  int i = 0, numberpos;
+  int i = 0, numtlv = 0;
   struct aim_tlvlist_t *tlvlist = NULL;
 
   if (!buf || !info)
@@ -592,12 +592,18 @@ faim_internal int aim_putuserinfo(u_char *buf, int buflen, struct aim_userinfo_s
 
   i += aimutil_put16(buf+i, info->warnlevel);
 
-  numberpos = i;
-  i += aimutil_put16(buf+i, 0); /* fill in for real later */
+
   aim_addtlvtochain16(&tlvlist, 0x0001, info->flags);
+  numtlv++;
+
   aim_addtlvtochain32(&tlvlist, 0x0002, info->membersince);
+  numtlv++;
+
   aim_addtlvtochain32(&tlvlist, 0x0003, info->onlinesince);
+  numtlv++;
+
   aim_addtlvtochain16(&tlvlist, 0x0004, info->idletime);
+  numtlv++;
 
 #if ICQ_OSCAR_SUPPORT
   if(atoi(info->sn) != 0) {
@@ -607,16 +613,15 @@ faim_internal int aim_putuserinfo(u_char *buf, int buflen, struct aim_userinfo_s
 #endif
 
   aim_addtlvtochain_caps(&tlvlist, 0x000d, info->capabilities);
-
-  aim_addtlvtochain32(&tlvlist, 0x000f, info->sessionlen);
+  numtlv++;
 
   aim_addtlvtochain32(&tlvlist, (unsigned short)((info->flags)&AIM_FLAG_AOL?0x0010:0x000f), info->sessionlen);
+  numtlv++;
 
-  i += aim_writetlvchain(buf+i, buflen-i, &tlvlist);
+  i += aimutil_put16(buf+i, numtlv); /* tlvcount */
+  i += aim_writetlvchain(buf+i, buflen-i, &tlvlist); /* tlvs */
   aim_freetlvchain(&tlvlist);
 
-  aimutil_put16(buf+numberpos, aim_counttlvchain(&tlvlist));
-  
   return i;
 }
 
index 3557d5a643208331a6df6d1f3dcec52a51c28d87..75cc7eaa976ab529195572dd4955cabfb2c68de5 100644 (file)
--- a/aim_tlv.c
+++ b/aim_tlv.c
@@ -212,12 +212,15 @@ faim_internal int aim_addtlvtochain_caps(struct aim_tlvlist_t **list, unsigned s
   if(!list)
     return 0;
 
+  newtl = (struct aim_tlvlist_t *)malloc(sizeof(struct aim_tlvlist_t));
+  memset(newtl, 0x00, sizeof(struct aim_tlvlist_t));
+
   newtl->tlv = aim_createtlv();        
   newtl->tlv->type = type;
 
-  newtl->tlv->length = aim_putcap(buf, 128, caps);
+  newtl->tlv->length = aim_putcap(buf, sizeof(buf), caps);
   newtl->tlv->value = (unsigned char *)calloc(1, newtl->tlv->length);
-  memcpy(newtl->tlv->value, &buf, newtl->tlv->length);
+  memcpy(newtl->tlv->value, buf, newtl->tlv->length);
 
   newtl->next = NULL;
 
This page took 0.145121 seconds and 5 git commands to generate.