Changeset - 83f5f36c94a2
[Not reviewed]
0 5 0
HanzZ - 13 years ago 2012-08-07 17:41:13
hanzz.k@gmail.com
Check if JID is valid when calling setName and ignore buddies with invalid JID
5 files changed with 13 insertions and 9 deletions:
0 comments (0 inline, 0 general)
include/transport/buddy.h
Show inline comments
 
@@ -169,11 +169,11 @@ class Buddy {
 

	
 
	protected:
 
		void generateJID();
 
		Swift::JID m_jid;
 

	
 
	private:
 
		long m_id;
 
// 		Swift::Presence::ref m_lastPresence;
 
		Swift::JID m_jid;
 
		BuddyFlag m_flags;
 
		RosterManager *m_rosterManager;
 
		Subscription m_subscription;
src/buddy.cpp
Show inline comments
 
@@ -51,9 +51,11 @@ long Buddy::getID() {
 
void Buddy::setFlags(BuddyFlag flags) {
 
	m_flags = flags;
 

	
 
	try {
 
		generateJID();
 
	} catch (...) {
 
	if (!getSafeName().empty()) {
 
		try {
 
			generateJID();
 
		} catch (...) {
 
		}
 
	}
 
}
 

	
src/localbuddy.cpp
Show inline comments
 
@@ -39,7 +39,7 @@ bool LocalBuddy::setName(const std::string &name) {
 
	m_name = name;
 
	try {
 
		generateJID();
 
		return true;
 
		return m_jid.isValid();
 
	} catch (...) {
 
		m_name = oldName;
 
		return false;
src/networkpluginserver.cpp
Show inline comments
 
@@ -95,6 +95,7 @@ class NetworkFactory : public Factory {
 
		Buddy *createBuddy(RosterManager *rosterManager, const BuddyInfo &buddyInfo) {
 
			LocalBuddy *buddy = new LocalBuddy(rosterManager, buddyInfo.id);
 
			buddy->setAlias(buddyInfo.alias);
 
			buddy->setFlags((BuddyFlag) (buddyInfo.flags));
 
			if (!buddy->setName(buddyInfo.legacyName)) {
 
				delete buddy;
 
				return NULL;
 
@@ -106,7 +107,6 @@ class NetworkFactory : public Factory {
 
				buddy->setSubscription(Buddy::Ask);
 
			}
 
			buddy->setGroups(buddyInfo.groups);
 
			buddy->setFlags((BuddyFlag) (buddyInfo.flags));
 
			if (buddyInfo.settings.find("icon_hash") != buddyInfo.settings.end())
 
				buddy->setIconHash(buddyInfo.settings.find("icon_hash")->second.s);
 
			return buddy;
src/rostermanager.cpp
Show inline comments
 
@@ -524,9 +524,11 @@ void RosterManager::setStorageBackend(StorageBackend *storageBackend) {
 

	
 
	for (std::list<BuddyInfo>::const_iterator it = roster.begin(); it != roster.end(); it++) {
 
		Buddy *buddy = m_component->getFactory()->createBuddy(this, *it);
 
		LOG4CXX_INFO(logger, m_user->getJID().toString() << ": Adding cached buddy " << buddy->getName() << " fom database");
 
		m_buddies[buddy->getName()] = buddy;
 
		onBuddySet(buddy);
 
		if (buddy) {
 
			LOG4CXX_INFO(logger, m_user->getJID().toString() << ": Adding cached buddy " << buddy->getName() << " fom database");
 
			m_buddies[buddy->getName()] = buddy;
 
			onBuddySet(buddy);
 
		}
 
	}
 

	
 
	m_rosterStorage = storage;
0 comments (0 inline, 0 general)