Changes in protocols/oscar/tlv.c [fbc7844:b7d3cc34]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
protocols/oscar/tlv.c
rfbc7844 rb7d3cc34 1 1 #include <aim.h> 2 2 3 static aim_tlv_t *createtlv(void) 4 { 5 return g_new0(aim_tlv_t, 1); 6 } 7 3 8 static void freetlv(aim_tlv_t **oldtlv) 4 9 { 10 5 11 if (!oldtlv || !*oldtlv) 6 12 return; … … 9 15 g_free(*oldtlv); 10 16 *oldtlv = NULL; 17 18 return; 11 19 } 12 20 … … 38 46 length = aimbs_get16(bs); 39 47 40 cur = g_new0(aim_tlvlist_t, 1); 41 42 cur->tlv = g_new0(aim_tlv_t, 1); 43 cur->tlv->type = type; 44 if ((cur->tlv->length = length)) 45 cur->tlv->value = aimbs_getraw(bs, length); 46 47 cur->next = list; 48 list = cur; 48 #if 0 /* temporarily disabled until I know if they're still doing it or not */ 49 /* 50 * Okay, so now AOL has decided that any TLV of 51 * type 0x0013 can only be two bytes, despite 52 * what the actual given length is. So here 53 * we dump any invalid TLVs of that sort. Hopefully 54 * theres no special cases to this special case. 55 * - mid (30jun2000) 56 */ 57 if ((type == 0x0013) && (length != 0x0002)) 58 length = 0x0002; 59 #else 60 if (0) 61 ; 62 #endif 63 else { 64 65 cur = g_new0(aim_tlvlist_t, 1); 66 67 cur->tlv = createtlv(); 68 cur->tlv->type = type; 69 if ((cur->tlv->length = length)) 70 cur->tlv->value = aimbs_getraw(bs, length); 71 72 cur->next = list; 73 list = cur; 74 } 49 75 } 50 76 … … 147 173 return 0; 148 174 149 if (!(newtlv->tlv = g_new0(aim_tlv_t, 1))) {175 if (!(newtlv->tlv = createtlv())) { 150 176 g_free(newtlv); 151 177 return 0;
Note: See TracChangeset
for help on using the changeset viewer.