1
0
mirror of git://git.gnupg.org/gnupg.git synced 2024-12-22 10:19:57 +01:00

Fixed a W32 crash in gpg2 when creating a new keyring.

Typo fixes.
This commit is contained in:
Werner Koch 2008-01-29 16:04:57 +00:00
parent 3d39e45a01
commit 843d6c69ef
4 changed files with 23 additions and 5 deletions

View 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> 2008-01-26 Werner Koch <wk@g10code.com>
* card-util.c (get_manufacturer): Add vendor 0004. * card-util.c (get_manufacturer): Add vendor 0004.

View File

@ -1,5 +1,6 @@
/* keydb.c - key database dispatcher /* 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. * This file is part of GnuPG.
* *
@ -82,6 +83,7 @@ maybe_create_keyring (char *filename, int force)
int rc; int rc;
mode_t oldmask; mode_t oldmask;
char *last_slash_in_filename; char *last_slash_in_filename;
int save_slash;
/* A quick test whether the filename already exists. */ /* A quick test whether the filename already exists. */
if (!access (filename, F_OK)) 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 tricky auto-creation which is anyway only done for some home
directory name patterns. */ directory name patterns. */
last_slash_in_filename = strrchr (filename, DIRSEP_C); 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; *last_slash_in_filename = 0;
if (access(filename, F_OK)) if (access(filename, F_OK))
{ {
@ -115,8 +129,7 @@ maybe_create_keyring (char *filename, int force)
goto leave; 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 /* To avoid races with other instances of gpg trying to create or
update the keyring (it is removed during an update for a short update the keyring (it is removed during an update for a short

View 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 b16 MD5 checksum (useful for KS syncronisation), we might also want to use
a mac here. a mac here.
b4 resevered b4 reserved
*/ */

View 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 /* We have to ignore ambigious names as long as
there only fault is a bad key usage. This is there only fault is a bad key usage. This is
required to support encryption and signing 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 Further we ignore them if they are due to an
identical certificate (which may happen if a identical certificate (which may happen if a