mirror of
				https://github.com/cuberite/polarssl.git
				synced 2025-10-30 19:20:40 -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; | expression x, y; | ||||||
| statement S; | statement S; | ||||||
| @@ | @@ | ||||||
|   x = mbedtls_malloc(...); |   x = mbedtls_calloc(...); | ||||||
|   y = mbedtls_malloc(...); |   y = mbedtls_calloc(...); | ||||||
|   ... |   ... | ||||||
| * if (x == NULL || y == NULL) | * if (x == NULL || y == NULL) | ||||||
|     S |     S | ||||||
| @ -13,8 +13,8 @@ expression x, y; | |||||||
| statement S; | statement S; | ||||||
| @@ | @@ | ||||||
|   if ( |   if ( | ||||||
| *   (x = mbedtls_malloc(...)) == NULL | *   (x = mbedtls_calloc(...)) == NULL | ||||||
|     || |     || | ||||||
| *   (y = mbedtls_malloc(...)) == NULL | *   (y = mbedtls_calloc(...)) == NULL | ||||||
|   ) |   ) | ||||||
|     S |     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