2003-01-29 Marcus Brinkmann <marcus@g10code.de>
* configure.ac: Remove all uses of GNUPG_CHECK_TYPEDEF, for byte, ushort, ulong, u16 and u32. * acinclude.m4 (GNUPG_CHECK_TYPEDEF): Remove macro. gpgme/ 2003-01-29 Marcus Brinkmann <marcus@g10code.de> * types.h: Remove byte and ulong types. * util.h (_gpgme_hextobyte): Change prototype to unsigned char instead byte. * conversion.c (_gpgme_hextobyte): Change argument to unsigned char instead byte. (_gpgme_decode_c_string): Likewise, and beautify. Also support a few more escaped characters. Be more strict about buffer size. (_gpgme_data_append_percentstring_for_xml): Change type of SRC, BUF and DST to unsigned char instead byte. * progress.c (_gpgme_progress_status_handler): Use unsigned char instead byte. * debug.c (trim_spaces): Likewise.
This commit is contained in:
parent
6912c46a77
commit
13e4d78a82
@ -1,3 +1,9 @@
|
|||||||
|
2003-01-29 Marcus Brinkmann <marcus@g10code.de>
|
||||||
|
|
||||||
|
* configure.ac: Remove all uses of GNUPG_CHECK_TYPEDEF, for byte,
|
||||||
|
ushort, ulong, u16 and u32.
|
||||||
|
* acinclude.m4 (GNUPG_CHECK_TYPEDEF): Remove macro.
|
||||||
|
|
||||||
2002-12-24 Marcus Brinkmann <marcus@g10code.de>
|
2002-12-24 Marcus Brinkmann <marcus@g10code.de>
|
||||||
|
|
||||||
* configure.ac: New conditional HAVE_LD_VERSION_SCRIPT.
|
* configure.ac: New conditional HAVE_LD_VERSION_SCRIPT.
|
||||||
|
18
acinclude.m4
18
acinclude.m4
@ -26,24 +26,6 @@ AC_DEFUN(GNUPG_FIX_HDR_VERSION,
|
|||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
dnl GNUPG_CHECK_TYPEDEF(TYPE, HAVE_NAME)
|
|
||||||
dnl Check whether a typedef exists and create a #define $2 if it exists
|
|
||||||
dnl
|
|
||||||
AC_DEFUN(GNUPG_CHECK_TYPEDEF,
|
|
||||||
[ AC_MSG_CHECKING(for $1 typedef)
|
|
||||||
AC_CACHE_VAL(gnupg_cv_typedef_$1,
|
|
||||||
[AC_TRY_COMPILE([#include <stdlib.h>
|
|
||||||
#include <sys/types.h>], [
|
|
||||||
#undef $1
|
|
||||||
int a = sizeof($1);
|
|
||||||
], gnupg_cv_typedef_$1=yes, gnupg_cv_typedef_$1=no )])
|
|
||||||
AC_MSG_RESULT($gnupg_cv_typedef_$1)
|
|
||||||
if test "$gnupg_cv_typedef_$1" = yes; then
|
|
||||||
AC_DEFINE($2, ,
|
|
||||||
[Define to 1 if $1 is defined in the <sys/types.h> header file.])
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl ##
|
dnl ##
|
||||||
dnl ## GNU Pth - The GNU Portable Threads
|
dnl ## GNU Pth - The GNU Portable Threads
|
||||||
dnl ## Copyright (c) 1999-2002 Ralf S. Engelschall <rse@engelschall.com>
|
dnl ## Copyright (c) 1999-2002 Ralf S. Engelschall <rse@engelschall.com>
|
||||||
|
@ -145,16 +145,9 @@ dnl Checks for header files.
|
|||||||
dnl
|
dnl
|
||||||
AC_CHECK_HEADERS(sys/select.h)
|
AC_CHECK_HEADERS(sys/select.h)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
dnl
|
dnl
|
||||||
dnl Checks for typedefs and structures.
|
dnl Type checks.
|
||||||
dnl
|
dnl
|
||||||
GNUPG_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF)
|
|
||||||
GNUPG_CHECK_TYPEDEF(ushort, HAVE_USHORT_TYPEDEF)
|
|
||||||
GNUPG_CHECK_TYPEDEF(ulong, HAVE_ULONG_TYPEDEF)
|
|
||||||
GNUPG_CHECK_TYPEDEF(u16, HAVE_U16_TYPEDEF)
|
|
||||||
GNUPG_CHECK_TYPEDEF(u32, HAVE_U32_TYPEDEF)
|
|
||||||
|
|
||||||
AC_CHECK_SIZEOF(unsigned int)
|
AC_CHECK_SIZEOF(unsigned int)
|
||||||
|
|
||||||
|
@ -1,5 +1,18 @@
|
|||||||
2003-01-29 Marcus Brinkmann <marcus@g10code.de>
|
2003-01-29 Marcus Brinkmann <marcus@g10code.de>
|
||||||
|
|
||||||
|
* types.h: Remove byte and ulong types.
|
||||||
|
* util.h (_gpgme_hextobyte): Change prototype to unsigned char
|
||||||
|
instead byte.
|
||||||
|
* conversion.c (_gpgme_hextobyte): Change argument to unsigned
|
||||||
|
char instead byte.
|
||||||
|
(_gpgme_decode_c_string): Likewise, and beautify. Also support a
|
||||||
|
few more escaped characters. Be more strict about buffer size.
|
||||||
|
(_gpgme_data_append_percentstring_for_xml): Change type of SRC,
|
||||||
|
BUF and DST to unsigned char instead byte.
|
||||||
|
* progress.c (_gpgme_progress_status_handler): Use unsigned char
|
||||||
|
instead byte.
|
||||||
|
* debug.c (trim_spaces): Likewise.
|
||||||
|
|
||||||
* util.h (mk_error): Remove macro.
|
* util.h (mk_error): Remove macro.
|
||||||
* conversion.c, data.c, data-compat.c, decrypt.c, delete.c,
|
* conversion.c, data.c, data-compat.c, decrypt.c, delete.c,
|
||||||
edit.c, encrypt.c, encrypt-sign.c, engine.c, engine-gpgsm.c,
|
edit.c, encrypt.c, encrypt-sign.c, engine.c, engine-gpgsm.c,
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* conversion.c - String conversion helper functions.
|
/* conversion.c - String conversion helper functions.
|
||||||
Copyright (C) 2000 Werner Koch (dd9jn)
|
Copyright (C) 2000 Werner Koch (dd9jn)
|
||||||
Copyright (C) 2001, 2002 g10 Code GmbH
|
Copyright (C) 2001, 2002, 2003 g10 Code GmbH
|
||||||
|
|
||||||
This file is part of GPGME.
|
This file is part of GPGME.
|
||||||
|
|
||||||
@ -31,9 +31,12 @@
|
|||||||
#include "gpgme.h"
|
#include "gpgme.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
|
||||||
|
|
||||||
|
/* Convert two hexadecimal digits from STR to the value they
|
||||||
|
represent. Returns -1 if one of the characters is not a
|
||||||
|
hexadecimal digit. */
|
||||||
int
|
int
|
||||||
_gpgme_hextobyte (const byte *str)
|
_gpgme_hextobyte (const unsigned char *str)
|
||||||
{
|
{
|
||||||
int val = 0;
|
int val = 0;
|
||||||
int i;
|
int i;
|
||||||
@ -68,12 +71,18 @@ _gpgme_decode_c_string (const char *src, char **destp, int len)
|
|||||||
{
|
{
|
||||||
char *dest;
|
char *dest;
|
||||||
|
|
||||||
|
/* Set up the destination buffer. */
|
||||||
if (len)
|
if (len)
|
||||||
|
{
|
||||||
|
if (len < strlen (src) + 1)
|
||||||
|
return GPGME_General_Error;
|
||||||
|
|
||||||
dest = *destp;
|
dest = *destp;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* We can malloc a buffer of the same length, because the converted
|
/* The converted string will never be larger than the original
|
||||||
string will never be larger. */
|
string. */
|
||||||
dest = malloc (strlen (src) + 1);
|
dest = malloc (strlen (src) + 1);
|
||||||
if (!dest)
|
if (!dest)
|
||||||
return GPGME_Out_Of_Core;
|
return GPGME_Out_Of_Core;
|
||||||
@ -81,71 +90,70 @@ _gpgme_decode_c_string (const char *src, char **destp, int len)
|
|||||||
*destp = dest;
|
*destp = dest;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Convert the string. */
|
||||||
while (*src)
|
while (*src)
|
||||||
{
|
{
|
||||||
if (*src != '\\')
|
if (*src != '\\')
|
||||||
|
{
|
||||||
*(dest++) = *(src++);
|
*(dest++) = *(src++);
|
||||||
else if (src[1] == '\\')
|
continue;
|
||||||
{
|
|
||||||
src++;
|
|
||||||
*(dest++) = *(src++);
|
|
||||||
}
|
}
|
||||||
else if (src[1] == 'n')
|
|
||||||
|
switch (src[1])
|
||||||
{
|
{
|
||||||
src += 2;
|
#define DECODE_ONE(match,result) \
|
||||||
*(dest++) = '\n';
|
case match: \
|
||||||
}
|
src += 2; \
|
||||||
else if (src[1] == 'r')
|
*(dest++) = result; \
|
||||||
{
|
break;
|
||||||
src += 2;
|
|
||||||
*(dest++) = '\r';
|
DECODE_ONE ('\'', '\'');
|
||||||
}
|
DECODE_ONE ('\"', '\"');
|
||||||
else if (src[1] == 'v')
|
DECODE_ONE ('\?', '\?');
|
||||||
{
|
DECODE_ONE ('\\', '\\');
|
||||||
src += 2;
|
DECODE_ONE ('a', '\a');
|
||||||
*(dest++) = '\v';
|
DECODE_ONE ('b', '\b');
|
||||||
}
|
DECODE_ONE ('f', '\f');
|
||||||
else if (src[1] == 'b')
|
DECODE_ONE ('n', '\n');
|
||||||
{
|
DECODE_ONE ('r', '\r');
|
||||||
src += 2;
|
DECODE_ONE ('t', '\t');
|
||||||
*(dest++) = '\b';
|
DECODE_ONE ('v', '\v');
|
||||||
}
|
|
||||||
else if (src[1] == '0')
|
case 'x':
|
||||||
{
|
|
||||||
/* Hmmm: no way to express this */
|
|
||||||
src += 2;
|
|
||||||
*(dest++) = '\\';
|
|
||||||
*(dest++) = '\0';
|
|
||||||
}
|
|
||||||
else if (src[1] == 'x' && isxdigit (src[2]) && isxdigit (src[3]))
|
|
||||||
{
|
{
|
||||||
int val = _gpgme_hextobyte (&src[2]);
|
int val = _gpgme_hextobyte (&src[2]);
|
||||||
|
|
||||||
if (val == -1)
|
if (val == -1)
|
||||||
{
|
{
|
||||||
/* Should not happen. */
|
/* Should not happen. */
|
||||||
*(dest++) = *(src++);
|
*(dest++) = *(src++);
|
||||||
*(dest++) = *(src++);
|
*(dest++) = *(src++);
|
||||||
|
if (*src)
|
||||||
*(dest++) = *(src++);
|
*(dest++) = *(src++);
|
||||||
|
if (*src)
|
||||||
*(dest++) = *(src++);
|
*(dest++) = *(src++);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!val)
|
if (!val)
|
||||||
{
|
{
|
||||||
|
/* A binary zero is not representable in a C
|
||||||
|
string. */
|
||||||
*(dest++) = '\\';
|
*(dest++) = '\\';
|
||||||
*(dest++) = '\0';
|
*(dest++) = '0';
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
*(byte*)dest++ = val;
|
*((unsigned char *) dest++) = val;
|
||||||
src += 4;
|
src += 4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
default:
|
||||||
{
|
{
|
||||||
/* should not happen */
|
/* Should not happen. */
|
||||||
src++;
|
|
||||||
*(dest++) = '\\';
|
|
||||||
*(dest++) = *(src++);
|
*(dest++) = *(src++);
|
||||||
|
*(dest++) = *(src++);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*(dest++) = 0;
|
*(dest++) = 0;
|
||||||
@ -244,8 +252,8 @@ _gpgme_data_append_string_for_xml (GpgmeData dh, const char *str)
|
|||||||
GpgmeError
|
GpgmeError
|
||||||
_gpgme_data_append_percentstring_for_xml (GpgmeData dh, const char *str)
|
_gpgme_data_append_percentstring_for_xml (GpgmeData dh, const char *str)
|
||||||
{
|
{
|
||||||
const byte *src;
|
const unsigned char *src;
|
||||||
byte *buf, *dst;
|
unsigned char *buf, *dst;
|
||||||
int val;
|
int val;
|
||||||
GpgmeError err;
|
GpgmeError err;
|
||||||
|
|
||||||
|
@ -1,24 +1,26 @@
|
|||||||
/* debug.c - helpful output in desperate situations
|
/* debug.c - helpful output in desperate situations
|
||||||
* Copyright (C) 2001, 2002 g10 Code GmbH
|
Copyright (C) 2000 Werner Koch (dd9jn)
|
||||||
*
|
Copyright (C) 2001, 2002, 2003 g10 Code GmbH
|
||||||
* This file is part of GPGME.
|
|
||||||
*
|
|
||||||
* GPGME is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* GPGME is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
This file is part of GPGME.
|
||||||
|
|
||||||
|
GPGME is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
GPGME is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with GPGME; if not, write to the Free Software Foundation,
|
||||||
|
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
|
#if HAVE_CONFIG_H
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
#endif
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@ -56,11 +58,11 @@ trim_spaces (char *str)
|
|||||||
|
|
||||||
string = str;
|
string = str;
|
||||||
/* Find first non space character. */
|
/* Find first non space character. */
|
||||||
for (p = string; *p && isspace (*(byte *) p); p++)
|
for (p = string; *p && isspace (*(unsigned char *) p); p++)
|
||||||
;
|
;
|
||||||
/* Move characters. */
|
/* Move characters. */
|
||||||
for (mark = NULL; (*string = *p); string++, p++)
|
for (mark = NULL; (*string = *p); string++, p++)
|
||||||
if (isspace (*(byte *) p))
|
if (isspace (*(unsigned char *) p))
|
||||||
{
|
{
|
||||||
if (!mark)
|
if (!mark)
|
||||||
mark = string;
|
mark = string;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* progress.c - status handler for progress status
|
/* progress.c - status handler for progress status
|
||||||
Copyright (C) 2000 Werner Koch (dd9jn)
|
Copyright (C) 2000 Werner Koch (dd9jn)
|
||||||
Copyright (C) 2001, 2002 g10 Code GmbH
|
Copyright (C) 2001, 2002, 2003 g10 Code GmbH
|
||||||
|
|
||||||
This file is part of GPGME.
|
This file is part of GPGME.
|
||||||
|
|
||||||
@ -50,7 +50,7 @@ _gpgme_progress_status_handler (GpgmeCtx ctx, GpgmeStatusCode code, char *args)
|
|||||||
*p++ = 0;
|
*p++ = 0;
|
||||||
if (*p)
|
if (*p)
|
||||||
{
|
{
|
||||||
type = *(byte *)p;
|
type = *(unsigned char *)p;
|
||||||
p = strchr (p+1, ' ');
|
p = strchr (p+1, ' ');
|
||||||
if (p)
|
if (p)
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* types.h - Some type definitions
|
/* types.h - Type definitions.
|
||||||
Copyright (C) 2000 Werner Koch (dd9jn)
|
Copyright (C) 2000 Werner Koch (dd9jn)
|
||||||
Copyright (C) 2001, 2002 g10 Code GmbH
|
Copyright (C) 2001, 2002, 2003 g10 Code GmbH
|
||||||
|
|
||||||
This file is part of GPGME.
|
This file is part of GPGME.
|
||||||
|
|
||||||
@ -21,19 +21,9 @@
|
|||||||
#ifndef TYPES_H
|
#ifndef TYPES_H
|
||||||
#define TYPES_H
|
#define TYPES_H
|
||||||
|
|
||||||
#include "gpgme.h" /* external objects and prototypes */
|
#include "gpgme.h"
|
||||||
|
|
||||||
#ifndef HAVE_BYTE_TYPEDEF
|
/* Declaration of internal objects. */
|
||||||
typedef unsigned char byte;
|
|
||||||
#endif
|
|
||||||
#ifndef HAVE_ULONG_TYPEDEF
|
|
||||||
typedef unsigned long ulong;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Declaration of internal objects
|
|
||||||
*/
|
|
||||||
|
|
||||||
typedef GpgmeError (*GpgmeStatusHandler) (GpgmeCtx, GpgmeStatusCode code,
|
typedef GpgmeError (*GpgmeStatusHandler) (GpgmeCtx, GpgmeStatusCode code,
|
||||||
char *args);
|
char *args);
|
||||||
@ -94,5 +84,4 @@ typedef struct keylist_result_s *KeylistResult;
|
|||||||
struct edit_result_s;
|
struct edit_result_s;
|
||||||
typedef struct edit_result_s *EditResult;
|
typedef struct edit_result_s *EditResult;
|
||||||
|
|
||||||
|
|
||||||
#endif /* TYPES_H */
|
#endif /* TYPES_H */
|
||||||
|
@ -82,6 +82,11 @@ FILE *fopencookie (void *cookie, const char *opentype,
|
|||||||
|
|
||||||
|
|
||||||
/*-- conversion.c --*/
|
/*-- conversion.c --*/
|
||||||
|
/* Convert two hexadecimal digits from STR to the value they
|
||||||
|
represent. Returns -1 if one of the characters is not a
|
||||||
|
hexadecimal digit. */
|
||||||
|
int _gpgme_hextobyte (const unsigned char *str);
|
||||||
|
|
||||||
/* Decode the C formatted string SRC and store the result in the
|
/* Decode the C formatted string SRC and store the result in the
|
||||||
buffer *DESTP which is LEN bytes long. If LEN is zero, then a
|
buffer *DESTP which is LEN bytes long. If LEN is zero, then a
|
||||||
large enough buffer is allocated with malloc and *DESTP is set to
|
large enough buffer is allocated with malloc and *DESTP is set to
|
||||||
@ -89,6 +94,6 @@ FILE *fopencookie (void *cookie, const char *opentype,
|
|||||||
is desired or not, the caller is expected to make sure that *DESTP
|
is desired or not, the caller is expected to make sure that *DESTP
|
||||||
is large enough if LEN is not zero. */
|
is large enough if LEN is not zero. */
|
||||||
GpgmeError _gpgme_decode_c_string (const char *src, char **destp, int len);
|
GpgmeError _gpgme_decode_c_string (const char *src, char **destp, int len);
|
||||||
int _gpgme_hextobyte (const byte *str);
|
|
||||||
|
|
||||||
#endif /* UTIL_H */
|
#endif /* UTIL_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user