diff options
Diffstat (limited to 'lib/libalpm')
| -rw-r--r-- | lib/libalpm/sync.c | 46 | ||||
| -rw-r--r-- | lib/libalpm/trans.c | 4 | 
2 files changed, 31 insertions, 19 deletions
diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c index 76618665..22df9bf5 100644 --- a/lib/libalpm/sync.c +++ b/lib/libalpm/sync.c @@ -675,7 +675,11 @@ int _alpm_sync_prepare(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync  		if(deps) {  			pm_errno = PM_ERR_UNSATISFIED_DEPS;  			ret = -1; -			*data = deps; +			if(data) { +				*data = deps; +			} else { +				FREELIST(deps); +			}  			goto cleanup;  		}  	} @@ -887,35 +891,41 @@ static int test_md5sum(pmtrans_t *trans, const char *filename,  	md5sum2 = alpm_get_md5sum(filepath);  	if(md5sum == NULL) { -		/* TODO wtf is this? malloc'd strings for error messages? */ -		if((errormsg = calloc(512, sizeof(char))) == NULL) { -			RET_ERR(PM_ERR_MEMORY, -1); +		if(data) { +			/* TODO wtf is this? malloc'd strings for error messages? */ +			if((errormsg = calloc(512, sizeof(char))) == NULL) { +				RET_ERR(PM_ERR_MEMORY, -1); +			} +			snprintf(errormsg, 512, _("can't get md5 checksum for file %s\n"), +					filename); +			*data = alpm_list_add(*data, errormsg);  		} -		snprintf(errormsg, 512, _("can't get md5 checksum for file %s\n"), -				filename); -		*data = alpm_list_add(*data, errormsg);  		ret = 1;  	} else if(md5sum2 == NULL) { -		if((errormsg = calloc(512, sizeof(char))) == NULL) { -			RET_ERR(PM_ERR_MEMORY, -1); +		if(data) { +			if((errormsg = calloc(512, sizeof(char))) == NULL) { +				RET_ERR(PM_ERR_MEMORY, -1); +			} +			snprintf(errormsg, 512, _("can't get md5 checksum for file %s\n"), +					filename); +			*data = alpm_list_add(*data, errormsg);  		} -		snprintf(errormsg, 512, _("can't get md5 checksum for file %s\n"), -				filename); -		*data = alpm_list_add(*data, errormsg);  		ret = 1;  	} else if(strcmp(md5sum, md5sum2) != 0) {  		int doremove = 0; -		if((errormsg = calloc(512, sizeof(char))) == NULL) { -			RET_ERR(PM_ERR_MEMORY, -1); -		}  		QUESTION(trans, PM_TRANS_CONV_CORRUPTED_PKG, (char *)filename,  				NULL, NULL, &doremove);  		if(doremove) {  			unlink(filepath);  		} -		snprintf(errormsg, 512, _("file %s was corrupted (bad MD5 checksum)\n"), -				filename); -		*data = alpm_list_add(*data, errormsg); +		if(data) { +			if((errormsg = calloc(512, sizeof(char))) == NULL) { +				RET_ERR(PM_ERR_MEMORY, -1); +			} +			snprintf(errormsg, 512, _("file %s was corrupted (bad MD5 checksum)\n"), +					filename); +			*data = alpm_list_add(*data, errormsg); +		}  		ret = 1;  	} diff --git a/lib/libalpm/trans.c b/lib/libalpm/trans.c index 582c76b7..292c7160 100644 --- a/lib/libalpm/trans.c +++ b/lib/libalpm/trans.c @@ -342,7 +342,9 @@ int _alpm_trans_addtarget(pmtrans_t *trans, char *target)  int _alpm_trans_prepare(pmtrans_t *trans, alpm_list_t **data)  { -	*data = NULL; +	if(data) { +		*data = NULL; +	}  	ALPM_LOG_FUNC;  | 
