aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteffen Hansen <[email protected]>2002-07-01 12:52:29 +0000
committerSteffen Hansen <[email protected]>2002-07-01 12:52:29 +0000
commit7a826e3f35716936e97fa0d8391692651a544d18 (patch)
treeb3860b0ee044db5e1a4109a673fb723356ed3ff1
parentavoid another memory leak in checkMessageSignature() (diff)
downloadgpgme-7a826e3f35716936e97fa0d8391692651a544d18.tar.gz
gpgme-7a826e3f35716936e97fa0d8391692651a544d18.zip
Fixed memory corruption bug
Diffstat (limited to '')
-rw-r--r--gpgmeplug/gpgmeplug.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/gpgmeplug/gpgmeplug.c b/gpgmeplug/gpgmeplug.c
index a5804bd0..038df500 100644
--- a/gpgmeplug/gpgmeplug.c
+++ b/gpgmeplug/gpgmeplug.c
@@ -1726,13 +1726,15 @@ xmalloc (size_t n)
return p;
}
-/* Please: Don't call an allocation function xfoo when it may return NULL. */
-/* Wrong: #define xstrdup( x ) (x)?strdup(x):0 */
-/* Right: */
static char *
xstrdup (const char *string)
{
- char *p = xmalloc (strlen (string));
+ char *p;
+ if( !string ) {
+ fputs ("\nfatal: xstrdup(NULL)\n", stderr);
+ exit (4);
+ }
+ p = xmalloc (strlen (string)+1);
strcpy (p, string);
return p;
}
@@ -2013,7 +2015,7 @@ startListCertificates( const char* pattern, int remote )
GpgmeError err;
struct CertIterator* it;
const char* patterns[] = { pattern, NULL };
- fprintf( stderr, "startListCertificates( \"%s\", %d )", pattern, remote );
+ fprintf( stderr, "startListCertificates( \"%s\", %d )\n", pattern, remote );
it = xmalloc( sizeof( struct CertIterator ) );
@@ -2029,6 +2031,7 @@ startListCertificates( const char* pattern, int remote )
else gpgme_set_keylist_mode ( it->ctx, GPGME_KEYLIST_MODE_LOCAL );
err = gpgme_op_keylist_ext_start ( it->ctx, patterns, 0, 0);
if( err != GPGME_No_Error ) {
+ fprintf( stderr, "gpgme_op_keylist_ext_start returned %d", err );
endListCertificates( it );
return NULL;
}
@@ -2095,6 +2098,7 @@ nextCertificate( struct CertIterator* it, struct CertificateInfo** result )
GpgmeKey key;
int retval = GPGME_No_Error;
assert( it );
+ fprintf( stderr, "nextCertificates( %p, %p )\n", it, result );
err = gpgme_op_keylist_next ( it->ctx, &key);
if( err != GPGME_EOF ) {
int idx;
@@ -2182,9 +2186,9 @@ nextCertificate( struct CertIterator* it, struct CertificateInfo** result )
int
endListCertificates( struct CertIterator* it )
{
- /*fprintf( stderr, "endListCertificates()\n" );*/
char *s = gpgme_get_op_info (it->ctx, 0);
int truncated = s && strstr (s, "<truncated/>");
+ fprintf( stderr, "endListCertificates( %p )\n", it );
if( s ) free( s );
assert(it);
freeInfo( &(it->info) );