Mercurial > pidgin
view libpurple/protocols/msn/p2p.c @ 30934:4e097dfb7784
Fix some leaks. Header and footer are allocated, copied and not freed.
author | Elliott Sales de Andrade <qulogic@pidgin.im> |
---|---|
date | Sun, 21 Nov 2010 08:47:08 +0000 |
parents | 5964f65c17ed |
children | 72e6fa6caecc |
line wrap: on
line source
#include "internal.h" #include "p2p.h" MsnP2PHeader * msn_p2p_header_from_wire(MsnP2PHeader *wire) { MsnP2PHeader *header; header = g_new(MsnP2PHeader, 1); header->session_id = GUINT32_FROM_LE(wire->session_id); header->id = GUINT32_FROM_LE(wire->id); header->offset = GUINT64_FROM_LE(wire->offset); header->total_size = GUINT64_FROM_LE(wire->total_size); header->length = GUINT32_FROM_LE(wire->length); header->flags = GUINT32_FROM_LE(wire->flags); header->ack_id = GUINT32_FROM_LE(wire->ack_id); header->ack_sub_id = GUINT32_FROM_LE(wire->ack_sub_id); header->ack_size = GUINT64_FROM_LE(wire->ack_size); return header; } MsnP2PHeader * msn_p2p_header_to_wire(MsnP2PHeader *header) { MsnP2PHeader *wire; wire = g_new(MsnP2PHeader, 1); wire->session_id = GUINT32_TO_LE(header->session_id); wire->id = GUINT32_TO_LE(header->id); wire->offset = GUINT64_TO_LE(header->offset); wire->total_size = GUINT64_TO_LE(header->total_size); wire->length = GUINT32_TO_LE(header->length); wire->flags = GUINT32_TO_LE(header->flags); wire->ack_id = GUINT32_TO_LE(header->ack_id); wire->ack_sub_id = GUINT32_TO_LE(header->ack_sub_id); wire->ack_size = GUINT64_TO_LE(header->ack_size); return wire; } MsnP2PFooter * msn_p2p_footer_from_wire(MsnP2PFooter *wire) { MsnP2PFooter *footer; footer = g_new(MsnP2PFooter, 1); footer->value = GUINT32_FROM_BE(wire->value); return footer; } MsnP2PFooter * msn_p2p_footer_to_wire(MsnP2PFooter *footer) { MsnP2PFooter *wire; wire = g_new(MsnP2PFooter, 1); wire->value = GUINT32_TO_BE(footer->value); return wire; } gboolean msn_p2p_msg_is_data(const MsnP2PHeaderFlag flags) { return (flags == P2P_MSN_OBJ_DATA || flags == (P2P_WML2009_COMP | P2P_MSN_OBJ_DATA) || flags == P2P_FILE_DATA); }