Fixed a W32 crash in gpg2 when creating a new keyring.
authorWerner Koch <wk@gnupg.org>
Tue, 29 Jan 2008 16:04:57 +0000 (16:04 +0000)
committerWerner Koch <wk@gnupg.org>
Tue, 29 Jan 2008 16:04:57 +0000 (16:04 +0000)
Typo fixes.

g10/ChangeLog
g10/keydb.c
kbx/keybox-blob.c
sm/certlist.c

index af90bd7..1de64dc 100644 (file)
@@ -1,3 +1,8 @@
+2008-01-29  Werner Koch  <wk@g10code.com>
+
+       * keydb.c (maybe_create_keyring): Take care of a missing slash.
+       (maybe_create_keyring) [W32]: Also test for forward slash.
+
 2008-01-26  Werner Koch  <wk@g10code.com>
 
        * card-util.c (get_manufacturer): Add vendor 0004.
index 69e24ae..31e8098 100644 (file)
@@ -1,5 +1,6 @@
 /* keydb.c - key database dispatcher
- * Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+ * Copyright (C) 2001, 2002, 2003, 2004, 2005, 
+ *               2008 Free Software Foundation, Inc.
  *
  * This file is part of GnuPG.
  *
@@ -82,6 +83,7 @@ maybe_create_keyring (char *filename, int force)
   int rc;
   mode_t oldmask;
   char *last_slash_in_filename;
+  int save_slash;
 
   /* A quick test whether the filename already exists. */
   if (!access (filename, F_OK))
@@ -98,6 +100,18 @@ maybe_create_keyring (char *filename, int force)
      tricky auto-creation which is anyway only done for some home
      directory name patterns. */
   last_slash_in_filename = strrchr (filename, DIRSEP_C);
+#if HAVE_W32_SYSTEM
+  {
+    /* Windows may either have a slash or a backslash.  Take care of it.  */
+    char *p = strrchr (filename, '/');
+    if (!last_slash_in_filename || p > last_slash_in_filename)
+      last_slash_in_filename = p;
+  }
+#endif /*HAVE_W32_SYSTEM*/
+  if (!last_slash_in_filename)
+    return gpg_error (GPG_ERR_ENOENT);  /* No slash at all - should
+                                           not happen though.  */
+  save_slash = *last_slash_in_filename;
   *last_slash_in_filename = 0;
   if (access(filename, F_OK))
     { 
@@ -115,8 +129,7 @@ maybe_create_keyring (char *filename, int force)
           goto leave;
         }
     }
-  *last_slash_in_filename = DIRSEP_C;
-
+  *last_slash_in_filename = save_slash;
 
   /* To avoid races with other instances of gpg trying to create or
      update the keyring (it is removed during an update for a short
index 6ad9aea..b0f227c 100644 (file)
@@ -103,7 +103,7 @@ X.509 specific are noted like [X.509: xxx]
 
  b16   MD5 checksum  (useful for KS syncronisation), we might also want to use
     a mac here.
- b4    resevered
+ b4    reserved
 
 */
 
index 4c92a1b..d4a351b 100644 (file)
@@ -367,7 +367,7 @@ gpgsm_add_to_certlist (ctrl_t ctrl, const char *name, int secret,
                   /* We have to ignore ambigious names as long as
                      there only fault is a bad key usage.  This is
                      required to support encryption and signing
-                     certifciates of the same subject.
+                     certificates of the same subject.
 
                      Further we ignore them if they are due to an
                      identical certificate (which may happen if a