mirror of
				https://github.com/CumulusNetworks/ifupdown2.git
				synced 2024-05-06 15:54:50 +00:00 
			
		
		
		
	Fix stdin issues with missing config filename ifquery for disable_cli_interfacesfile
Ticket: CM-7066
Reviewed By: roopa
Testing Done: unit tested and wrote new testcase in testifupdown2
Use case for ifquery where stdin used with -i breaks
because interfacesfileiobuf was not checked in addition to interfacesfilename.
Testcase like:
echo '[{"name": "swp1","auto": true,"config": {"address": "10.10.10.10/24"}}]' | ifquery -i - -t json swp1
would fail because while -i was given with stdin, the check for missing filename would produce an error.
It was also decided by consensus that the ifquery command does not need to have a check for
disable_cli_interfacesfile since a query "should" not pose a security check.
(I've also added some test cases for this in cl-tests).
(cherry picked from commit 4d37e932b43da87a9240a866be2d8b9508a9c7eb)
			
			
This commit is contained in:
		
				
					committed by
					
						 Roopa Prabhu
						Roopa Prabhu
					
				
			
			
				
	
			
			
			
						parent
						
							67cfaeb1cf
						
					
				
				
					commit
					c28fc55eb9
				
			| @@ -434,8 +434,9 @@ class networkInterfaces(): | ||||
|         Assumes networkinterfaces parser object is initialized with the | ||||
|         parser arguments | ||||
|         """ | ||||
|         if self.interfacesfile == None: | ||||
|             self.logger.warn('no network interfaces file defined in ifupdown2.conf') | ||||
|         if not self.interfacesfile and not self.interfacesfileiobuf: | ||||
|             self.logger.warn('no terminal line stdin used or ') | ||||
|             self.logger.warn('no network interfaces file defined.') | ||||
|             return | ||||
|  | ||||
|         if self.interfacesfileformat == 'json': | ||||
|   | ||||
| @@ -187,7 +187,9 @@ def init(args): | ||||
|  | ||||
|     if hasattr(args, 'interfacesfile') and args.interfacesfile != None: | ||||
|         # Check to see if -i option is allowed by config file | ||||
|         if configmap_g.get('disable_cli_interfacesfile','1') == '1': | ||||
|         # But for ifquery, we will not check this | ||||
|         if (not sys.argv[0].endswith('ifquery') and | ||||
|                 configmap_g.get('disable_cli_interfacesfile','1') == '1'): | ||||
|             logger.error('disable_cli_interfacesfile is set so users ' | ||||
|                          'not allowed to specify interfaces file on cli.') | ||||
|             exit(1) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user