2002-06-03 Marcus Brinkmann <marcus@g10code.de>

* key.c: Include <ctype.h>.
	(_gpgme_key_append_name): Skip one more char when
	processing escaped char.  Submitted by Marc Mutz <mutz@kde.org>.
	Handle hexadecimal encodings.  Also reported by Marc.  Thanks!
This commit is contained in:
Marcus Brinkmann 2002-06-02 23:09:16 +00:00
parent b024a61d89
commit 7892a2a64f
2 changed files with 28 additions and 9 deletions

View File

@ -1,3 +1,10 @@
2002-06-03 Marcus Brinkmann <marcus@g10code.de>
* key.c: Include <ctype.h>.
(_gpgme_key_append_name): Skip one more char when
processing escaped char. Submitted by Marc Mutz <mutz@kde.org>.
Handle hexadecimal encodings. Also reported by Marc. Thanks!
2002-06-02 Marcus Brinkmann <marcus@g10code.de> 2002-06-02 Marcus Brinkmann <marcus@g10code.de>
* ath.h: Enable the _gpgme_ prefix. Fix all those prefix macros. * ath.h: Enable the _gpgme_ prefix. Fix all those prefix macros.

View File

@ -24,6 +24,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <assert.h> #include <assert.h>
#include <ctype.h>
#include "util.h" #include "util.h"
#include "ops.h" #include "ops.h"
@ -627,17 +628,28 @@ _gpgme_key_append_name (GpgmeKey key, const char *s)
*d++ = '\\'; *d++ = '\\';
*d++ = '\0'; *d++ = '\0';
} }
else if (s[1] == 'x' && my_isdigit (s[2]) && my_isdigit (s[3])) else if (s[1] == 'x' && isxdigit (s[2]) && isxdigit (s[3]))
{ {
unsigned int val = (s[2]-'0')*16 + (s[3]-'0'); int val = hextobyte (&s[2]);
if (!val) if (val == -1)
{ {
*d++ = '\\'; /* Should not happen. */
*d++ = '\0'; *d++ = *s++;
} *d++ = *s++;
else *d++ = *s++;
*(byte*)d++ = val; *d++ = *s++;
s += 3; }
else
{
if (!val)
{
*d++ = '\\';
*d++ = '\0';
}
else
*(byte*)d++ = val;
s += 4;
}
} }
else else
{ {