[pacman-dev] [PATCH 2/2] copy file siglevels from SigLevel when first seen
Andrew Gregory
andrew.gregory.8 at gmail.com
Mon Oct 28 09:58:29 EDT 2013
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.
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);
--
1.8.4.1
More information about the pacman-dev
mailing list