handle jid errors
This commit is contained in:
		
							parent
							
								
									676bda8281
								
							
						
					
					
						commit
						016ccb74b1
					
				
					 1 changed files with 49 additions and 11 deletions
				
			
		| 
						 | 
				
			
			@ -758,7 +758,7 @@ class ConnectionDisco:
 | 
			
		|||
			if 'jid' not in attr:
 | 
			
		||||
				continue
 | 
			
		||||
			try:
 | 
			
		||||
				helpers.parse_jid(attr['jid'])
 | 
			
		||||
				attr['jid'] = helpers.parse_jid(attr['jid'])
 | 
			
		||||
			except common.helpers.InvalidFormat:
 | 
			
		||||
				# jid is not conform
 | 
			
		||||
				continue
 | 
			
		||||
| 
						 | 
				
			
			@ -1150,7 +1150,10 @@ class ConnectionVcard:
 | 
			
		|||
				storage = query.getTag('storage')
 | 
			
		||||
				metas = storage.getTags('meta')
 | 
			
		||||
				for meta in metas:
 | 
			
		||||
					jid = helpers.parse_jid(meta.getAttr('jid'))
 | 
			
		||||
					try:
 | 
			
		||||
						jid = helpers.parse_jid(meta.getAttr('jid'))
 | 
			
		||||
					except common.helpers.InvalidFormat:
 | 
			
		||||
						continue
 | 
			
		||||
					tag = meta.getAttr('tag')
 | 
			
		||||
					data = {'jid': jid}
 | 
			
		||||
					order = meta.getAttr('order')
 | 
			
		||||
| 
						 | 
				
			
			@ -1518,13 +1521,17 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco,
 | 
			
		|||
					print_status = conf.getTagData('print_status')
 | 
			
		||||
					if not print_status:
 | 
			
		||||
						print_status = conf.getTagData('show_status')
 | 
			
		||||
					bm = {'name': conf.getAttr('name'),
 | 
			
		||||
					try:
 | 
			
		||||
						bm = {'name': conf.getAttr('name'),
 | 
			
		||||
							'jid': helpers.parse_jid(conf.getAttr('jid')),
 | 
			
		||||
							'autojoin': autojoin_val,
 | 
			
		||||
							'minimize': minimize_val,
 | 
			
		||||
							'password': conf.getTagData('password'),
 | 
			
		||||
							'nick': conf.getTagData('nick'),
 | 
			
		||||
							'print_status': print_status}
 | 
			
		||||
					except common.helpers.InvalidFormat:
 | 
			
		||||
						log.warn('Invalid JID: %s, ignoring it' % conf.getAttr('jid'))
 | 
			
		||||
						continue
 | 
			
		||||
 | 
			
		||||
					self.bookmarks.append(bm)
 | 
			
		||||
				self.dispatch('BOOKMARKS', self.bookmarks)
 | 
			
		||||
| 
						 | 
				
			
			@ -1539,14 +1546,22 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco,
 | 
			
		|||
				# http://www.xmpp.org/extensions/xep-0145.html
 | 
			
		||||
				notes = storage.getTags('note')
 | 
			
		||||
				for note in notes:
 | 
			
		||||
					jid = helpers.parse_jid(note.getAttr('jid'))
 | 
			
		||||
					try:
 | 
			
		||||
						jid = helpers.parse_jid(note.getAttr('jid'))
 | 
			
		||||
					except common.helpers.InvalidFormat:
 | 
			
		||||
						log.warn('Invalid JID: %s, ignoring it' % note.getAttr('jid'))
 | 
			
		||||
						continue
 | 
			
		||||
					annotation = note.getData()
 | 
			
		||||
					self.annotations[jid] = annotation
 | 
			
		||||
 | 
			
		||||
	def _rosterSetCB(self, con, iq_obj):
 | 
			
		||||
		log.debug('rosterSetCB')
 | 
			
		||||
		for item in iq_obj.getTag('query').getChildren():
 | 
			
		||||
			jid = helpers.parse_jid(item.getAttr('jid'))
 | 
			
		||||
			try:
 | 
			
		||||
				jid = helpers.parse_jid(item.getAttr('jid'))
 | 
			
		||||
			except common.helpers.InvalidFormat:
 | 
			
		||||
				log.warn('Invalid JID: %s, ignoring it' % item.getAttr('jid'))
 | 
			
		||||
				continue
 | 
			
		||||
			name = item.getAttr('name')
 | 
			
		||||
			sub = item.getAttr('subscription')
 | 
			
		||||
			ask = item.getAttr('ask')
 | 
			
		||||
| 
						 | 
				
			
			@ -1785,7 +1800,11 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco,
 | 
			
		|||
			action = 'add'
 | 
			
		||||
		for item in msg.getTag('x',
 | 
			
		||||
		namespace=common.xmpp.NS_ROSTERX).getChildren():
 | 
			
		||||
			jid = helpers.parse_jid(item.getAttr('jid'))
 | 
			
		||||
			try:
 | 
			
		||||
				jid = helpers.parse_jid(item.getAttr('jid'))
 | 
			
		||||
			except common.helpers.InvalidFormat:
 | 
			
		||||
				log.warn('Invalid JID: %s, ignoring it' % item.getAttr('jid'))
 | 
			
		||||
				continue
 | 
			
		||||
			name = item.getAttr('name')
 | 
			
		||||
			groups=[]
 | 
			
		||||
			for group in item.getTags('group'):
 | 
			
		||||
| 
						 | 
				
			
			@ -1832,7 +1851,11 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco,
 | 
			
		|||
		if addressTag and jid == gajim.get_jid_from_account(self.name):
 | 
			
		||||
			address = addressTag.getTag('address', attrs={'type': 'ofrom'})
 | 
			
		||||
			if address:
 | 
			
		||||
				frm = helpers.parse_jid(address.getAttr('jid'))
 | 
			
		||||
				try:
 | 
			
		||||
					frm = helpers.parse_jid(address.getAttr('jid'))
 | 
			
		||||
				except common.helpers.InvalidFormat:
 | 
			
		||||
					log.warn('Invalid JID: %s, ignoring it' % address.getAttr('jid'))
 | 
			
		||||
					return
 | 
			
		||||
				jid = gajim.get_jid_without_resource(frm)
 | 
			
		||||
 | 
			
		||||
		# invitations
 | 
			
		||||
| 
						 | 
				
			
			@ -1850,7 +1873,11 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco,
 | 
			
		|||
		xtags = msg.getTags('x')
 | 
			
		||||
		for xtag in xtags:
 | 
			
		||||
			if xtag.getNamespace() == common.xmpp.NS_CONFERENCE and not invite:
 | 
			
		||||
				room_jid = helpers.parse_jid(xtag.getAttr('jid'))
 | 
			
		||||
				try:
 | 
			
		||||
					room_jid = helpers.parse_jid(xtag.getAttr('jid'))
 | 
			
		||||
				except common.helpers.InvalidFormat:
 | 
			
		||||
					log.warn('Invalid JID: %s, ignoring it' % xtag.getAttr('jid'))
 | 
			
		||||
					continue
 | 
			
		||||
				is_continued = False
 | 
			
		||||
				if xtag.getTag('continue'):
 | 
			
		||||
					is_continued = True
 | 
			
		||||
| 
						 | 
				
			
			@ -2050,7 +2077,11 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco,
 | 
			
		|||
 | 
			
		||||
	def dispatch_invite_message(self, invite, frm):
 | 
			
		||||
		item = invite.getTag('invite')
 | 
			
		||||
		jid_from = helpers.parse_jid(item.getAttr('from'))
 | 
			
		||||
		try:
 | 
			
		||||
			jid_from = helpers.parse_jid(item.getAttr('from'))
 | 
			
		||||
		except common.helpers.InvalidFormat:
 | 
			
		||||
			log.warn('Invalid JID: %s, ignoring it' % item.getAttr('from'))
 | 
			
		||||
			return
 | 
			
		||||
		reason = item.getTagData('reason')
 | 
			
		||||
		item = invite.getTag('password')
 | 
			
		||||
		password = invite.getTagData('password')
 | 
			
		||||
| 
						 | 
				
			
			@ -2254,7 +2285,10 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco,
 | 
			
		|||
					r = destroy.getTagData('reason')
 | 
			
		||||
					if r:
 | 
			
		||||
						reason += ' (%s)' % r
 | 
			
		||||
					jid = helpers.parse_jid(destroy.getAttr('jid'))
 | 
			
		||||
					try:
 | 
			
		||||
						jid = helpers.parse_jid(destroy.getAttr('jid'))
 | 
			
		||||
					except common.helpers.InvalidFormat:
 | 
			
		||||
						pass
 | 
			
		||||
					if jid:
 | 
			
		||||
						reason += '\n' + _('You can join this room instead: %s') % jid
 | 
			
		||||
					statusCode = ['destroyed']
 | 
			
		||||
| 
						 | 
				
			
			@ -2401,7 +2435,11 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco,
 | 
			
		|||
		users_dict = {}
 | 
			
		||||
		for item in items:
 | 
			
		||||
			if item.has_attr('jid') and item.has_attr('affiliation'):
 | 
			
		||||
				jid = helpers.parse_jid(item.getAttr('jid'))
 | 
			
		||||
				try:
 | 
			
		||||
					jid = helpers.parse_jid(item.getAttr('jid'))
 | 
			
		||||
				except common.helpers.InvalidFormat:
 | 
			
		||||
					log.warn('Invalid JID: %s, ignoring it' % item.getAttr('jid'))
 | 
			
		||||
					return
 | 
			
		||||
				affiliation = item.getAttr('affiliation')
 | 
			
		||||
				users_dict[jid] = {'affiliation': affiliation}
 | 
			
		||||
				if item.has_attr('nick'):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue