mirror of
				https://github.com/swaywm/sway.git
				synced 2025-11-03 09:01:43 -05:00 
			
		
		
		
	Merge pull request #1424 from ggreer/swaygrab-json
swaygrab: Prevent segfault if IPC response can't be parsed.
This commit is contained in:
		
						commit
						d10e723183
					
				
					 1 changed files with 10 additions and 1 deletions
				
			
		| 
						 | 
					@ -4,6 +4,7 @@
 | 
				
			||||||
#include <stdbool.h>
 | 
					#include <stdbool.h>
 | 
				
			||||||
#include <stdlib.h>
 | 
					#include <stdlib.h>
 | 
				
			||||||
#include <unistd.h>
 | 
					#include <unistd.h>
 | 
				
			||||||
 | 
					#include "log.h"
 | 
				
			||||||
#include "ipc-client.h"
 | 
					#include "ipc-client.h"
 | 
				
			||||||
#include "swaygrab/json.h"
 | 
					#include "swaygrab/json.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -12,7 +13,15 @@ static json_object *tree;
 | 
				
			||||||
void init_json_tree(int socketfd) {
 | 
					void init_json_tree(int socketfd) {
 | 
				
			||||||
	uint32_t len = 0;
 | 
						uint32_t len = 0;
 | 
				
			||||||
	char *res = ipc_single_command(socketfd, IPC_GET_TREE, NULL, &len);
 | 
						char *res = ipc_single_command(socketfd, IPC_GET_TREE, NULL, &len);
 | 
				
			||||||
	tree = json_tokener_parse(res);
 | 
						struct json_tokener *tok = json_tokener_new_ex(256);
 | 
				
			||||||
 | 
						if (!tok) {
 | 
				
			||||||
 | 
							sway_abort("Unable to get json tokener.");
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						tree = json_tokener_parse_ex(tok, res, len);
 | 
				
			||||||
 | 
						if (!tree || tok->err != json_tokener_success) {
 | 
				
			||||||
 | 
							sway_abort("Unable to parse IPC response as JSON: %s", json_tokener_error_desc(tok->err));
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						json_tokener_free(tok);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void free_json_tree() {
 | 
					void free_json_tree() {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue