mirror of
				https://git.kernel.org/pub/scm/network/wireless/iwd.git
				synced 2025-11-04 08:57:29 +01:00 
			
		
		
		
	network: fix handling of AlwaysRandomizeAddress/AddressOverride
For network configuration files the man pages (iwd.network) state
that [General].{AlwaysRandomizeAddress,AddressOverride} are only
used if main.conf has [General].AddressRandomization=network.
This actually was not being enforced and both iwd.network settings
were still taken into account regardless of what AddressRandomization
was set to (even disabled).
The handshake setup code now checks the AddressRandomization value
and if anything other than 'network' skips the randomization.
			
			
This commit is contained in:
		
							parent
							
								
									c36f94a15a
								
							
						
					
					
						commit
						2ad5e48314
					
				@ -485,10 +485,12 @@ int network_handshake_setup(struct network *network, struct scan_bss *bss,
 | 
			
		||||
	struct station *station = network->station;
 | 
			
		||||
	struct wiphy *wiphy = station_get_wiphy(station);
 | 
			
		||||
	struct l_settings *settings = network->settings;
 | 
			
		||||
	const struct l_settings *config = iwd_get_config();
 | 
			
		||||
	struct network_info *info = network->info;
 | 
			
		||||
	uint32_t eapol_proto_version;
 | 
			
		||||
	uint8_t new_addr[ETH_ALEN];
 | 
			
		||||
	int r;
 | 
			
		||||
	const char *str;
 | 
			
		||||
 | 
			
		||||
	switch (network->security) {
 | 
			
		||||
	case SECURITY_PSK:
 | 
			
		||||
@ -523,6 +525,15 @@ int network_handshake_setup(struct network *network, struct scan_bss *bss,
 | 
			
		||||
		handshake_state_set_protocol_version(hs, eapol_proto_version);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * The randomization options in the provisioning file are dependent on
 | 
			
		||||
	 * main.conf: [General].AddressRandomization=network. Any other value
 | 
			
		||||
	 * should disqualify the three network-specific settings below.
 | 
			
		||||
	 */
 | 
			
		||||
	str = l_settings_get_value(config, "General", "AddressRandomization");
 | 
			
		||||
	if (!(str && !strcmp(str, "network")))
 | 
			
		||||
		return 0;
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * We have three possible options here:
 | 
			
		||||
	 * 1. per-network MAC generation (default, no option in network config)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user