]> err.no Git - yubikey-personalization/commitdiff
handle deleting configuration better
authorKlas Lindfors <klas@yubico.com>
Thu, 18 Oct 2012 08:49:17 +0000 (10:49 +0200)
committerKlas Lindfors <klas@yubico.com>
Thu, 18 Oct 2012 08:49:17 +0000 (10:49 +0200)
if both slots are configured and one is deleted programming sequence will be
counted up as usual. when the last slot is deleted programming sequence will
be set to 0. try to handle this.

ykcore/ykcore.c

index 21a51b3f8b2a7854e8708f82545e3cb2c49095bc..c938b83209fbec6bc5625626b2101d3dbd1bfb34 100644 (file)
@@ -212,11 +212,14 @@ int yk_write_command(YK_KEY *yk, YK_CONFIG *cfg, uint8_t command,
                return 0;
 
        yk_errno = YK_EWRITEERR;
-       if (cfg) {
-               return stat.pgmSeq != seq;
-       }
 
-       return stat.pgmSeq == 0;
+       /* when both configurations from a YubiKey is erased it will return
+        * pgmSeq 0, if one is still configured after an erase pgmSeq is
+        * counted up as usual. */
+       if(!cfg && stat.pgmSeq == 0) {
+               return 1;
+       }
+       return stat.pgmSeq != seq;
 }
 
 int yk_write_config(YK_KEY *yk, YK_CONFIG *cfg, int confnum,