mirror of
				https://github.com/cuberite/polarssl.git
				synced 2025-10-30 11:11:12 -04:00 
			
		
		
		
	Merge remote-tracking branch 'upstream-public/pr/995' into development
This commit is contained in:
		
						commit
						f16de7d525
					
				| @ -2,8 +2,8 @@ | ||||
| expression x, y; | ||||
| statement S; | ||||
| @@ | ||||
|   x = mbedtls_malloc(...); | ||||
|   y = mbedtls_malloc(...); | ||||
|   x = mbedtls_calloc(...); | ||||
|   y = mbedtls_calloc(...); | ||||
|   ... | ||||
| * if (x == NULL || y == NULL) | ||||
|     S | ||||
| @ -13,8 +13,8 @@ expression x, y; | ||||
| statement S; | ||||
| @@ | ||||
|   if ( | ||||
| *   (x = mbedtls_malloc(...)) == NULL | ||||
| *   (x = mbedtls_calloc(...)) == NULL | ||||
|     || | ||||
| *   (y = mbedtls_malloc(...)) == NULL | ||||
| *   (y = mbedtls_calloc(...)) == NULL | ||||
|   ) | ||||
|     S | ||||
|  | ||||
| @ -1,70 +0,0 @@ | ||||
| #!/usr/bin/perl | ||||
| 
 | ||||
| # Check for malloc calls not shortly followed by initialisation. | ||||
| # | ||||
| # Known limitations: | ||||
| # - false negative: can't see allocations spanning more than one line | ||||
| # - possible false negatives, see patterns | ||||
| # - false positive: malloc-malloc-init-init is not accepted | ||||
| # - false positives: "non-standard" init functions (eg, the things being | ||||
| # initialised is not the first arg, or initialise struct members) | ||||
| # | ||||
| # Since false positives are expected, the results must be manually reviewed. | ||||
| # | ||||
| # Typical usage: scripts/malloc-init.pl library/*.c | ||||
| 
 | ||||
| use warnings; | ||||
| use strict; | ||||
| 
 | ||||
| use utf8; | ||||
| use open qw(:std utf8); | ||||
| 
 | ||||
| my $limit = 7; | ||||
| my $inits = qr/memset|memcpy|_init|fread|base64_..code/; | ||||
| 
 | ||||
| # cases to bear in mind: | ||||
| # | ||||
| # 0. foo = malloc(...); memset( foo, ... ); | ||||
| # 1. *foo = malloc(...); memset( *foo, ... ); | ||||
| # 2. type *foo = malloc(...); memset( foo, ...); | ||||
| # 3. foo = malloc(...); foo_init( (type *) foo ); | ||||
| # 4. foo = malloc(...); for(i=0..n) { init( &foo[i] ); } | ||||
| # | ||||
| # The chosen patterns are a bit relaxed, but unlikely to cause false positives | ||||
| # in real code (initialising *foo or &foo instead of foo will likely be caught | ||||
| # by functional tests). | ||||
| # | ||||
| my $id = qr/([a-zA-Z-0-9_\->\.]*)/; | ||||
| my $prefix = qr/\s(?:\*?|\&?|\([a-z_]* \*\))\s*/; | ||||
| 
 | ||||
| my $name; | ||||
| my $line; | ||||
| my @bad; | ||||
| 
 | ||||
| die "Usage: $0 file.c [...]\n" unless @ARGV; | ||||
| 
 | ||||
| while (my $file = shift @ARGV) | ||||
| { | ||||
|     open my $fh, "<", $file or die "read $file failed: $!\n"; | ||||
|     while (<$fh>) | ||||
|     { | ||||
|         if( /mbedtls_malloc\(/ ) { | ||||
|             if( /$id\s*=.*mbedtls_malloc\(/ ) { | ||||
|                 push @bad, "$file:$line:$name" if $name; | ||||
|                 $name = $1; | ||||
|                 $line = $.; | ||||
|             } else { | ||||
|                 push @bad, "$file:$.:???" unless /return mbedtls_malloc/; | ||||
|             } | ||||
|         } elsif( $name && /(?:$inits)\($prefix\Q$name\E\b/ ) { | ||||
|             undef $name; | ||||
|         } elsif( $name && $. - $line > $limit ) { | ||||
|             push @bad, "$file:$line:$name"; | ||||
|             undef $name; | ||||
|             undef $line; | ||||
|         } | ||||
|     } | ||||
|     close $fh or die; | ||||
| } | ||||
| 
 | ||||
| print "$_\n" for @bad; | ||||
							
								
								
									
										7
									
								
								scripts/rm-calloc-cast.cocci
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								scripts/rm-calloc-cast.cocci
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,7 @@ | ||||
| @rm_calloc_cast@ | ||||
| expression x, n, m; | ||||
| type T; | ||||
| @@ | ||||
|   x = | ||||
| - (T *) | ||||
|   mbedtls_calloc(n, m) | ||||
| @ -1,7 +0,0 @@ | ||||
| @rm_malloc_cast@ | ||||
| expression x, n; | ||||
| type T; | ||||
| @@ | ||||
|   x = | ||||
| - (T *) | ||||
|   mbedtls_malloc(n) | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Gilles Peskine
						Gilles Peskine