view pidgin/gtkaccount.h @ 30009:8d4bed3021dc

Fix some problems in the oscar code that deals with channel 2 icbms. Specifically related to rtf messages and sent as ICQ server relay. Introduced in 1431506710bed6b8f0c837b670ee314b1692990e in the im.pidgin.cpw.rekkanoryo.icqxstatus branch * memleak fix: We weren't freeing rtfmsg * remote crash fix: We always check args->info.rtfmsg.rtfmsg and try to convert it to UTF-8. However, args->info.rtfmsg is a part of a union and is only set/valid when args->type is OSCAR_CAPABILITY_ICQSERVERRELAY So channel 2 icbms of other types (like chat invites, for example) tend to cause a crash. * possibly printing invalid utf-8: if we could not convert rtfmsg to utf8, and the original rtfmsg failed to validate as utf8, then we tried to write the message to the im window anyway. But that's clearly not a good idea. Really glad I happened to find that remote crash before we released--dealing with security problems is such a pain.
author Mark Doliner <mark@kingant.net>
date Thu, 18 Mar 2010 07:55:17 +0000
parents 0077d3b6ecd2
children
line wrap: on
line source

/**
 * @file gtkaccount.h GTK+ Account Editor UI
 * @ingroup pidgin
 * @see @ref gtkaccount-signals
 */

/* pidgin
 *
 * Pidgin is the legal property of its developers, whose names are too numerous
 * to list here.  Please refer to the COPYRIGHT file distributed with this
 * source distribution.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
 */
#ifndef _PIDGINACCOUNT_H_
#define _PIDGINACCOUNT_H_

#include "account.h"

typedef enum
{
	PIDGIN_ADD_ACCOUNT_DIALOG,
	PIDGIN_MODIFY_ACCOUNT_DIALOG

} PidginAccountDialogType;


/**
 * Shows the accounts window.
 */
void pidgin_accounts_window_show(void);

/**
 * Hides the accounts window.
 */
void pidgin_accounts_window_hide(void);

/**
 * Shows an add/modify account dialog.
 *
 * @param type    The type of dialog.
 * @param account The associated account, or @c NULL for an Add dialog.
 */
void pidgin_account_dialog_show(PidginAccountDialogType type,
								  PurpleAccount *account);

/**
 * Returns the GTK+ account UI ops
 *
 * @return The UI operations structure.
 */
PurpleAccountUiOps *pidgin_accounts_get_ui_ops(void);

/**
 * Returns the gtkaccounts handle
 *
 * @return The handle to the GTK+ account system
 */
void *pidgin_account_get_handle(void);

/**
 * Initializes the GTK+ account system
 */
void pidgin_account_init(void);

/**
 * Uninitializes the GTK+ account system
 */
void pidgin_account_uninit(void);

#endif /* _PIDGINACCOUNT_H_ */