[pacman-dev] [PATCH v2] pacman/upgrade: Check malloc() return value

Andrew Gregory andrew.gregory.8 at gmail.com
Mon Mar 10 10:00:52 EDT 2014


On 03/09/14 at 03:47pm, Sören Brinkmann wrote:
> Check the return value of malloc() before dereferencing the returned pointer.
> 
> Signed-off-by: Sören Brinkmann <soeren.brinkmann at gmail.com>
> ---
> v2:
>  - add print statement to log the error
> ---
>  src/pacman/upgrade.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/src/pacman/upgrade.c b/src/pacman/upgrade.c
> index 5416f6180b39..11da4dcb5e53 100644
> --- a/src/pacman/upgrade.c
> +++ b/src/pacman/upgrade.c
> @@ -51,6 +51,10 @@ int pacman_upgrade(alpm_list_t *targets)
>  	 */
>  	for(i = targets; i; i = alpm_list_next(i)) {
>  		int *r = malloc(sizeof(int));
> +		if(r == NULL) {
> +			pm_printf(ALPM_LOG_ERROR, _("memory exhausted\n"));
> +			return 1;
> +		}

If you move the malloc outside the loop and make it an array we have
a better chance of hitting this early enough that we still have
a little memory left for cleanup.

>  
>  		if(strstr(i->data, "://")) {
>  			char *str = alpm_fetch_pkgurl(config->handle, i->data);
> -- 
> 1.9.0


More information about the pacman-dev mailing list