42 lines
		
	
	
	
		
			825 B
			
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			42 lines
		
	
	
	
		
			825 B
			
		
	
	
	
		
			Text
		
	
	
	
	
	
| 
								 | 
							
								/// PTR_ERR should be applied before its argument is reassigned, typically
							 | 
						||
| 
								 | 
							
								/// to NULL
							 | 
						||
| 
								 | 
							
								///
							 | 
						||
| 
								 | 
							
								// Confidence: High
							 | 
						||
| 
								 | 
							
								// Copyright: (C) 2012 Julia Lawall, INRIA/LIP6.  GPLv2.
							 | 
						||
| 
								 | 
							
								// Copyright: (C) 2012 Gilles Muller, INRIA/LiP6.  GPLv2.
							 | 
						||
| 
								 | 
							
								// URL: http://coccinelle.lip6.fr/
							 | 
						||
| 
								 | 
							
								// Comments:
							 | 
						||
| 
								 | 
							
								// Options: -no_includes -include_headers
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								virtual org
							 | 
						||
| 
								 | 
							
								virtual report
							 | 
						||
| 
								 | 
							
								virtual context
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@r exists@
							 | 
						||
| 
								 | 
							
								expression e,e1;
							 | 
						||
| 
								 | 
							
								constant c;
							 | 
						||
| 
								 | 
							
								position p1,p2;
							 | 
						||
| 
								 | 
							
								@@
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								*e@p1 = c
							 | 
						||
| 
								 | 
							
								... when != e = e1
							 | 
						||
| 
								 | 
							
								    when != &e
							 | 
						||
| 
								 | 
							
								    when != true IS_ERR(e)
							 | 
						||
| 
								 | 
							
								*PTR_ERR@p2(e)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@script:python depends on org@
							 | 
						||
| 
								 | 
							
								p1 << r.p1;
							 | 
						||
| 
								 | 
							
								p2 << r.p2;
							 | 
						||
| 
								 | 
							
								@@
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								cocci.print_main("PTR_ERR",p2)
							 | 
						||
| 
								 | 
							
								cocci.print_secs("assignment",p1)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@script:python depends on report@
							 | 
						||
| 
								 | 
							
								p1 << r.p1;
							 | 
						||
| 
								 | 
							
								p2 << r.p2;
							 | 
						||
| 
								 | 
							
								@@
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								msg = "ERROR: PTR_ERR applied after initialization to constant on line %s" % (p1[0].line)
							 | 
						||
| 
								 | 
							
								coccilib.report.print_report(p2[0],msg)
							 |