wmail: use realloc(3) and handle allocation failures.
This commit is contained in:
		
							parent
							
								
									0fb61f1e49
								
							
						
					
					
						commit
						0360aff8e8
					
				
					 2 changed files with 12 additions and 10 deletions
				
			
		| 
						 | 
					@ -141,7 +141,7 @@ static bool Tokenize( const char *line, const char **id, const char **value )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void AddSenderToSkipList( char *sender )
 | 
					static void AddSenderToSkipList( char *sender )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    int numNames, i;
 | 
					    size_t numNames;
 | 
				
			||||||
    char **skipName, **newList;
 | 
					    char **skipName, **newList;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for( skipName = config.skipNames, numNames = 0;
 | 
					    for( skipName = config.skipNames, numNames = 0;
 | 
				
			||||||
| 
						 | 
					@ -154,15 +154,17 @@ static void AddSenderToSkipList( char *sender  )
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    TRACE( "adding \"%s\" to skip-list of currently %d names\n", sender, numNames );
 | 
					    TRACE( "adding \"%s\" to skip-list of currently %d names\n", sender, numNames );
 | 
				
			||||||
    newList = malloc( sizeof(char *) * (numNames + 2) );
 | 
					    newList = realloc( config.skipNames, sizeof *config.skipNames * (numNames + 2) );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for( i = 0; i < numNames; ++i )
 | 
					    if( newList == NULL )
 | 
				
			||||||
	newList[i] = config.skipNames[i];
 | 
					    {
 | 
				
			||||||
 | 
						WARNING( "Cannot allocate memory for skip list.\n");
 | 
				
			||||||
 | 
						return;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    newList[i] = sender;
 | 
					 | 
				
			||||||
    newList[i+1] = NULL;
 | 
					 | 
				
			||||||
    free( config.skipNames );
 | 
					 | 
				
			||||||
    config.skipNames = newList;
 | 
					    config.skipNames = newList;
 | 
				
			||||||
 | 
					    config.skipNames[numNames++] = sender;
 | 
				
			||||||
 | 
					    config.skipNames[numNames++] = NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void ResetConfigStrings( void )
 | 
					void ResetConfigStrings( void )
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1252,8 +1252,8 @@ static bool SkipSender( char *address )
 | 
				
			||||||
    size_t len = strlen( address );
 | 
					    size_t len = strlen( address );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // remove trailing '\n' got from fgets
 | 
					    // remove trailing '\n' got from fgets
 | 
				
			||||||
    if( address[len-1] == '\n' )
 | 
					    if( address[len - 1] == '\n' )
 | 
				
			||||||
	address[len-1] = '\0';
 | 
						address[len - 1] = '\0';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for( skipName = config.skipNames;
 | 
					    for( skipName = config.skipNames;
 | 
				
			||||||
	 skipName != NULL && *skipName != NULL; skipName++ )
 | 
						 skipName != NULL && *skipName != NULL; skipName++ )
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue