mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	pulse-server: avoid crashing when clearing metadata
The key will be NULL so we can't strdup it. Fixes #845
This commit is contained in:
		
							parent
							
								
									1c365f6169
								
							
						
					
					
						commit
						662fd8a1f9
					
				
					 2 changed files with 3 additions and 3 deletions
				
			
		| 
						 | 
					@ -871,7 +871,7 @@ static void refresh_auto_default_nodes(struct impl *impl)
 | 
				
			||||||
			const char *name = pw_properties_get(node->obj->obj.props, PW_KEY_NODE_NAME);
 | 
								const char *name = pw_properties_get(node->obj->obj.props, PW_KEY_NODE_NAME);
 | 
				
			||||||
			char buf[1024];
 | 
								char buf[1024];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if (strzcmp(name, def->value) == 0)
 | 
								if (name == NULL || strzcmp(name, def->value) == 0)
 | 
				
			||||||
				continue;
 | 
									continue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			free(def->value);
 | 
								free(def->value);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -953,7 +953,7 @@ static void manager_metadata(void *data, struct pw_manager_object *o,
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			if ((changed = strzcmp(client->default_sink, value))) {
 | 
								if ((changed = strzcmp(client->default_sink, value))) {
 | 
				
			||||||
				free(client->default_sink);
 | 
									free(client->default_sink);
 | 
				
			||||||
				client->default_sink = strdup(value);
 | 
									client->default_sink = value ? strdup(value) : NULL;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if (key == NULL || strcmp(key, "default.audio.source") == 0) {
 | 
							if (key == NULL || strcmp(key, "default.audio.source") == 0) {
 | 
				
			||||||
| 
						 | 
					@ -966,7 +966,7 @@ static void manager_metadata(void *data, struct pw_manager_object *o,
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			if ((changed = strzcmp(client->default_source, value))) {
 | 
								if ((changed = strzcmp(client->default_source, value))) {
 | 
				
			||||||
				free(client->default_source);
 | 
									free(client->default_source);
 | 
				
			||||||
				client->default_source = strdup(value);
 | 
									client->default_source = value ? strdup(value) : NULL;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if (changed)
 | 
							if (changed)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue