|  |  |  | @ -176,11 +176,12 @@ module SinkKind = struct | 
			
		
	
		
			
				
					|  |  |  |  |     match pname with | 
			
		
	
		
			
				
					|  |  |  |  |     | Typ.Procname.ObjC_Cpp cpp_name -> ( | 
			
		
	
		
			
				
					|  |  |  |  |       match Typ.Procname.get_method pname with | 
			
		
	
		
			
				
					|  |  |  |  |       | "operator[]" when is_buffer_class cpp_name | 
			
		
	
		
			
				
					|  |  |  |  |       | "operator[]" when Config.developer_mode && is_buffer_class cpp_name | 
			
		
	
		
			
				
					|  |  |  |  |        -> taint_nth 1 BufferAccess actuals | 
			
		
	
		
			
				
					|  |  |  |  |       | _ | 
			
		
	
		
			
				
					|  |  |  |  |        -> get_external_sink pname actuals ) | 
			
		
	
		
			
				
					|  |  |  |  |     | Typ.Procname.C _ when Typ.Procname.equal pname BuiltinDecl.__array_access | 
			
		
	
		
			
				
					|  |  |  |  |     | Typ.Procname.C _ | 
			
		
	
		
			
				
					|  |  |  |  |       when Config.developer_mode && Typ.Procname.equal pname BuiltinDecl.__array_access | 
			
		
	
		
			
				
					|  |  |  |  |      -> taint_all BufferAccess actuals | 
			
		
	
		
			
				
					|  |  |  |  |     | Typ.Procname.C _ when Typ.Procname.equal pname BuiltinDecl.__set_array_length | 
			
		
	
		
			
				
					|  |  |  |  |      -> (* called when creating a stack-allocated array *) | 
			
		
	
	
		
			
				
					|  |  |  | @ -191,12 +192,18 @@ module SinkKind = struct | 
			
		
	
		
			
				
					|  |  |  |  |        -> taint_all ShellExec actuals | 
			
		
	
		
			
				
					|  |  |  |  |       | "popen" | 
			
		
	
		
			
				
					|  |  |  |  |        -> taint_nth 0 ShellExec actuals | 
			
		
	
		
			
				
					|  |  |  |  |       | "brk" | "calloc" | "malloc" | "realloc" | "sbrk" | 
			
		
	
		
			
				
					|  |  |  |  |       | ("brk" | "calloc" | "malloc" | "realloc" | "sbrk") when Config.developer_mode | 
			
		
	
		
			
				
					|  |  |  |  |        -> taint_all Allocation actuals | 
			
		
	
		
			
				
					|  |  |  |  |       | "strcpy" | 
			
		
	
		
			
				
					|  |  |  |  |       | "strcpy" when Config.developer_mode | 
			
		
	
		
			
				
					|  |  |  |  |        -> (* warn if source array is tainted *) | 
			
		
	
		
			
				
					|  |  |  |  |           taint_nth 1 BufferAccess actuals | 
			
		
	
		
			
				
					|  |  |  |  |       | "memcpy" | "memmove" | "memset" | "strncpy" | "wmemcpy" | "wmemmove" | 
			
		
	
		
			
				
					|  |  |  |  |       | "memcpy" | 
			
		
	
		
			
				
					|  |  |  |  |       | "memmove" | 
			
		
	
		
			
				
					|  |  |  |  |       | "memset" | 
			
		
	
		
			
				
					|  |  |  |  |       | "strncpy" | 
			
		
	
		
			
				
					|  |  |  |  |       | "wmemcpy" | 
			
		
	
		
			
				
					|  |  |  |  |       | "wmemmove" | 
			
		
	
		
			
				
					|  |  |  |  |         when Config.developer_mode | 
			
		
	
		
			
				
					|  |  |  |  |        -> (* warn if count argument is tainted *) | 
			
		
	
		
			
				
					|  |  |  |  |           taint_nth 2 BufferAccess actuals | 
			
		
	
		
			
				
					|  |  |  |  |       | _ | 
			
		
	
	
		
			
				
					|  |  |  | 
 |