mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +00:00 
			
		
		
		
	Merged revisions 304638 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8 ........ r304638 | seanbright | 2011-01-28 15:19:08 -0500 (Fri, 28 Jan 2011) | 11 lines Restore some conditionals that we lost in r277814. There are some cases where ast_append_ha() is called with a NULL instead of a valid int pointer. So if we get a NULL, don't try to dereference it. (closes issue #18162) Reported by: imcdona Patches: issue0018162.patch uploaded by pabelanger (license 224) Tested by: enegaard ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@304639 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		
							
								
								
									
										20
									
								
								main/acl.c
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								main/acl.c
									
									
									
									
									
								
							| @@ -421,7 +421,9 @@ struct ast_ha *ast_append_ha(const char *sense, const char *stuff, struct ast_ha | ||||
| 	if (!ast_sockaddr_parse(&ha->addr, address, PARSE_PORT_FORBID)) { | ||||
| 		ast_log(LOG_WARNING, "Invalid IP address: %s\n", address); | ||||
| 		ast_free_ha(ha); | ||||
| 		*error = 1; | ||||
| 		if (error) { | ||||
| 			*error = 1; | ||||
| 		} | ||||
| 		return ret; | ||||
| 	} | ||||
|  | ||||
| @@ -443,7 +445,9 @@ struct ast_ha *ast_append_ha(const char *sense, const char *stuff, struct ast_ha | ||||
| 		if (!ast_sockaddr_parse(&ha->netmask, mask, PARSE_PORT_FORBID)) { | ||||
| 			ast_log(LOG_WARNING, "Invalid netmask: %s\n", mask); | ||||
| 			ast_free_ha(ha); | ||||
| 			*error = 1; | ||||
| 			if (error) { | ||||
| 				*error = 1; | ||||
| 			} | ||||
| 			return ret; | ||||
| 		} | ||||
| 		/* If someone specifies an IPv4-mapped IPv6 netmask, | ||||
| @@ -457,13 +461,17 @@ struct ast_ha *ast_append_ha(const char *sense, const char *stuff, struct ast_ha | ||||
| 		if (addr_is_v4 ^ mask_is_v4) { | ||||
| 			ast_log(LOG_WARNING, "Address and mask are not using same address scheme.\n"); | ||||
| 			ast_free_ha(ha); | ||||
| 			*error = 1; | ||||
| 			if (error) { | ||||
| 				*error = 1; | ||||
| 			} | ||||
| 			return ret; | ||||
| 		} | ||||
| 	} else if (parse_cidr_mask(&ha->netmask, addr_is_v4, mask)) { | ||||
| 		ast_log(LOG_WARNING, "Invalid CIDR netmask: %s\n", mask); | ||||
| 		ast_free_ha(ha); | ||||
| 		*error = 1; | ||||
| 		if (error) { | ||||
| 			*error = 1; | ||||
| 		} | ||||
| 		return ret; | ||||
| 	} | ||||
|  | ||||
| @@ -475,7 +483,9 @@ struct ast_ha *ast_append_ha(const char *sense, const char *stuff, struct ast_ha | ||||
| 		char *failaddr = ast_strdupa(ast_sockaddr_stringify(&ha->addr)); | ||||
| 		ast_log(LOG_WARNING, "Unable to apply netmask %s to address %s\n", failmask, failaddr); | ||||
| 		ast_free_ha(ha); | ||||
| 		*error = 1; | ||||
| 		if (error) { | ||||
| 			*error = 1; | ||||
| 		} | ||||
| 		return ret; | ||||
| 	} | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user