[pacman-dev] [PATCH 2/2] copy file siglevels from SigLevel when first seen

Allan McRae allan at archlinux.org
Thu Oct 31 02:13:52 EDT 2013


On 28/10/13 23:58, Andrew Gregory wrote:
> Both repo-specific siglevels and file siglevels used the default
> siglevel as their base.  Previously, repo siglevels inherited when the
> repo was parsed, but file siglevels inherited after config parsing was
> complete.  Having both options inherit from the default when they are
> first parsed is more intuitive and reduces parser complexity.
> 
> Signed-off-by: Andrew Gregory <andrew.gregory.8 at gmail.com>
> ---
> 
> This may change how some existing config files are parsed, but I doubt anybody
> is purposefully using the old behavior.
> 

Can you provide details of the old behaviour that is "broken" by this?


>  lib/libalpm/alpm.h    |  3 ---
>  lib/libalpm/be_sync.c |  2 +-
>  src/pacman/conf.c     | 36 ++++++------------------------------
>  3 files changed, 7 insertions(+), 34 deletions(-)
> 
> diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h
> index b049007..034b155 100644
> --- a/lib/libalpm/alpm.h
> +++ b/lib/libalpm/alpm.h
> @@ -115,9 +115,6 @@ typedef enum _alpm_siglevel_t {
>  	ALPM_SIG_DATABASE_MARGINAL_OK = (1 << 12),
>  	ALPM_SIG_DATABASE_UNKNOWN_OK = (1 << 13),
>  
> -	ALPM_SIG_PACKAGE_SET = (1 << 27),
> -	ALPM_SIG_PACKAGE_TRUST_SET = (1 << 28),
> -
>  	ALPM_SIG_USE_DEFAULT = (1 << 31)
>  } alpm_siglevel_t;
>  
> diff --git a/lib/libalpm/be_sync.c b/lib/libalpm/be_sync.c
> index 123d953..a4d6aff 100644
> --- a/lib/libalpm/be_sync.c
> +++ b/lib/libalpm/be_sync.c
> @@ -694,7 +694,7 @@ alpm_db_t *_alpm_db_register_sync(alpm_handle_t *handle, const char *treename,
>  	_alpm_log(handle, ALPM_LOG_DEBUG, "registering sync database '%s'\n", treename);
>  
>  #ifndef HAVE_LIBGPGME
> -	if((level &= ~ALPM_SIG_PACKAGE_SET) != 0 && level != ALPM_SIG_USE_DEFAULT) {
> +	if(level != 0 && level != ALPM_SIG_USE_DEFAULT) {
>  		RET_ERR(handle, ALPM_ERR_WRONG_ARGS, NULL);
>  	}
>  #endif
> diff --git a/src/pacman/conf.c b/src/pacman/conf.c
> index 231fe2a..387ade4 100644
> --- a/src/pacman/conf.c
> +++ b/src/pacman/conf.c
> @@ -328,7 +328,6 @@ static int process_siglevel(alpm_list_t *values, alpm_siglevel_t *storage,
>  		if(strcmp(value, "Never") == 0) {
>  			if(package) {
>  				level &= ~ALPM_SIG_PACKAGE;
> -				level |= ALPM_SIG_PACKAGE_SET;
>  			}
>  			if(database) {
>  				level &= ~ALPM_SIG_DATABASE;
> @@ -337,7 +336,6 @@ static int process_siglevel(alpm_list_t *values, alpm_siglevel_t *storage,
>  			if(package) {
>  				level |= ALPM_SIG_PACKAGE;
>  				level |= ALPM_SIG_PACKAGE_OPTIONAL;
> -				level |= ALPM_SIG_PACKAGE_SET;
>  			}
>  			if(database) {
>  				level |= ALPM_SIG_DATABASE;
> @@ -347,7 +345,6 @@ static int process_siglevel(alpm_list_t *values, alpm_siglevel_t *storage,
>  			if(package) {
>  				level |= ALPM_SIG_PACKAGE;
>  				level &= ~ALPM_SIG_PACKAGE_OPTIONAL;
> -				level |= ALPM_SIG_PACKAGE_SET;
>  			}
>  			if(database) {
>  				level |= ALPM_SIG_DATABASE;
> @@ -357,7 +354,6 @@ static int process_siglevel(alpm_list_t *values, alpm_siglevel_t *storage,
>  			if(package) {
>  				level &= ~ALPM_SIG_PACKAGE_MARGINAL_OK;
>  				level &= ~ALPM_SIG_PACKAGE_UNKNOWN_OK;
> -				level |= ALPM_SIG_PACKAGE_TRUST_SET;
>  			}
>  			if(database) {
>  				level &= ~ALPM_SIG_DATABASE_MARGINAL_OK;
> @@ -367,7 +363,6 @@ static int process_siglevel(alpm_list_t *values, alpm_siglevel_t *storage,
>  			if(package) {
>  				level |= ALPM_SIG_PACKAGE_MARGINAL_OK;
>  				level |= ALPM_SIG_PACKAGE_UNKNOWN_OK;
> -				level |= ALPM_SIG_PACKAGE_TRUST_SET;
>  			}
>  			if(database) {
>  				level |= ALPM_SIG_DATABASE_MARGINAL_OK;
> @@ -397,28 +392,6 @@ static int process_siglevel(alpm_list_t *values, alpm_siglevel_t *storage,
>  	return ret;
>  }
>  
> -/**
> - * Merge the package entires of two signature verification levels.
> - * @param base initial siglevel
> - * @param over overridden siglevel, derived value is stored here
> - */
> -static void merge_siglevel(alpm_siglevel_t *base, alpm_siglevel_t *over)
> -{
> -	alpm_siglevel_t level = *over;
> -	if(!(level & ALPM_SIG_USE_DEFAULT)) {
> -		if(!(level & ALPM_SIG_PACKAGE_SET)) {
> -			level |= *base & ALPM_SIG_PACKAGE;
> -			level |= *base & ALPM_SIG_PACKAGE_OPTIONAL;
> -		}
> -		if(!(level & ALPM_SIG_PACKAGE_TRUST_SET)) {
> -			level |= *base & ALPM_SIG_PACKAGE_MARGINAL_OK;
> -			level |= *base & ALPM_SIG_PACKAGE_UNKNOWN_OK;
> -		}
> -	}
> -
> -	*over = level;
> -}
> -
>  static int process_cleanmethods(alpm_list_t *values,
>  		const char *file, int linenum)
>  {
> @@ -572,6 +545,9 @@ static int _parse_options(const char *key, char *value,
>  			FREELIST(values);
>  		} else if(strcmp(key, "LocalFileSigLevel") == 0) {
>  			alpm_list_t *values = NULL;
> +			if(config->localfilesiglevel == ALPM_SIG_USE_DEFAULT) {
> +				config->localfilesiglevel = config->siglevel;
> +			}
>  			setrepeatingoption(value, "LocalFileSigLevel", &values);
>  			if(process_siglevel(values, &config->localfilesiglevel, file, linenum)) {
>  				FREELIST(values);
> @@ -580,6 +556,9 @@ static int _parse_options(const char *key, char *value,
>  			FREELIST(values);
>  		} else if(strcmp(key, "RemoteFileSigLevel") == 0) {
>  			alpm_list_t *values = NULL;
> +			if(config->remotefilesiglevel == ALPM_SIG_USE_DEFAULT) {
> +				config->remotefilesiglevel = config->siglevel;
> +			}
>  			setrepeatingoption(value, "RemoteFileSigLevel", &values);
>  			if(process_siglevel(values, &config->remotefilesiglevel, file, linenum)) {
>  				FREELIST(values);
> @@ -707,9 +686,6 @@ static int setup_libalpm(void)
>  	}
>  
>  	alpm_option_set_default_siglevel(handle, config->siglevel);
> -
> -	merge_siglevel(&config->siglevel, &config->localfilesiglevel);
> -	merge_siglevel(&config->siglevel, &config->remotefilesiglevel);
>  	alpm_option_set_local_file_siglevel(handle, config->localfilesiglevel);
>  	alpm_option_set_remote_file_siglevel(handle, config->remotefilesiglevel);
>  
> 



More information about the pacman-dev mailing list