mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 18:55:19 +00:00 
			
		
		
		
	Merged revisions 199138 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r199138 | dvossel | 2009-06-04 14:00:15 -0500 (Thu, 04 Jun 2009) | 3 lines Additional updates to AST-2009-001 ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@199139 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		| @@ -736,7 +736,8 @@ struct chan_iax2_pvt { | ||||
| 		/*! Default parkinglot */ | ||||
| 		AST_STRING_FIELD(parkinglot); | ||||
| 	); | ||||
| 	 | ||||
| 	/*! AUTHREJ all AUTHREP frames */ | ||||
| 	int authrej; | ||||
| 	/*! permitted authentication methods */ | ||||
| 	int authmethods; | ||||
| 	/*! permitted encryption methods */ | ||||
| @@ -6488,6 +6489,18 @@ static int check_access(int callno, struct sockaddr_in *sin, struct iax_ies *ies | ||||
| 			ast_string_field_set(iaxs[callno], secret, user->secret); | ||||
| 		res = 0; | ||||
| 		user = user_unref(user); | ||||
| 	} else { | ||||
| 		 /* user was not found, but we should still fake an AUTHREQ. | ||||
| 		  * Set authmethods to the last known authmethod used by the system | ||||
| 		  * Set a fake secret, it's not looked at, just required to attempt authentication. | ||||
| 		  * Set authrej so the AUTHREP is rejected without even looking at its contents */ | ||||
| 		iaxs[callno]->authmethods = last_authmethod ? last_authmethod : (IAX_AUTH_MD5 | IAX_AUTH_PLAINTEXT); | ||||
| 		ast_string_field_set(iaxs[callno], secret, "badsecret"); | ||||
| 		iaxs[callno]->authrej = 1; | ||||
| 		if (!ast_strlen_zero(iaxs[callno]->username)) { | ||||
| 			/* only send the AUTHREQ if a username was specified. */ | ||||
| 			res = 0; | ||||
| 		} | ||||
| 	} | ||||
| 	ast_set2_flag(iaxs[callno], iax2_getpeertrunk(*sin), IAX_TRUNK);	 | ||||
| 	return res; | ||||
| @@ -6598,6 +6611,9 @@ static int authenticate_verify(struct chan_iax2_pvt *p, struct iax_ies *ies) | ||||
| 		.name = p->username,	 | ||||
| 	}; | ||||
|  | ||||
| 	if (p->authrej) { | ||||
| 		return res; | ||||
| 	} | ||||
| 	user = ao2_find(users, &tmp_user, OBJ_POINTER); | ||||
| 	if (user) { | ||||
| 		if (ast_test_flag(p, IAX_MAXAUTHREQ)) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user