]> err.no Git - yubikey-personalization/commitdiff
ykp_write_config: Only output flags if all bits match.
authorFredrik Thulin <fredrik@yubico.com>
Sun, 26 Dec 2010 21:21:58 +0000 (22:21 +0100)
committerFredrik Thulin <fredrik@yubico.com>
Mon, 27 Dec 2010 13:20:47 +0000 (14:20 +0100)
Do not output a false positive for a config/ticket flag if only
some bits match.

Without this patch, a configuration with the single cfgflag
STRONG_PW2 was shown as

  STRONG_PW2|OATH_FIXED_MODHEX2|OATH_FIXED_MODHEX

since there are some bits matching STRONG_PW2 (0x40) in
OATH_FIXED_MODHEX (0x50). With this patch, single cfgflag
STRONG_PW2 is shown as

  STRONG_PW2|OATH_FIXED_MODHEX2

OATH_FIXED_MODHEX2 is also shown as it shares the value of 0x40,
and the outputting is not context aware (yet).

ykpers.c

index 5dbc6933f6fdccbf3647f89934c206497a028b72..ae3922f20e77daeb4e4ec48c9d00d94ad69ba0c4 100644 (file)
--- a/ykpers.c
+++ b/ykpers.c
@@ -427,7 +427,7 @@ int ykp_write_config(const YKP_CONFIG *cfg,
 
                buffer[0] = '\0';
                for (p = ticket_flags_map; p->flag; p++) {
-                       if (cfg->ykcore_config.tktFlags & p->flag
+                       if ((cfg->ykcore_config.tktFlags & p->flag) == p->flag
                            && p->vcheck(cfg)) {
                                if (*buffer) {
                                        strcat(buffer, str_flags_separator);
@@ -446,7 +446,7 @@ int ykp_write_config(const YKP_CONFIG *cfg,
 
                buffer[0] = '\0';
                for (p = config_flags_map; p->flag; p++) {
-                       if (cfg->ykcore_config.cfgFlags & p->flag
+                       if ((cfg->ykcore_config.cfgFlags & p->flag) == p->flag
                            && p->vcheck(cfg)) {
                                if (*buffer) {
                                        strcat(buffer, str_flags_separator);