aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--ChangeLog.ja8
-rw-r--r--configure.in2
-rw-r--r--src/rfc2015.c24
-rw-r--r--src/sigstatus.c2
5 files changed, 33 insertions, 11 deletions
diff --git a/ChangeLog b/ChangeLog
index 8259d929..2e7fdd34 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2005-04-13
+
+ * src/rfc2015.c: pgp_sign(): fixed missing brackets. Check if
+ result->signatures is not NULL (fix crashes when ~/.gnupg doesn't
+ exist).
+ * src/sigstatus.c: gpgmegtk_sig_status_to_string(): check if signature
+ is not NULL.
+
2005-04-12
* version 1.9.8
diff --git a/ChangeLog.ja b/ChangeLog.ja
index 4fcf1825..9f06b2a7 100644
--- a/ChangeLog.ja
+++ b/ChangeLog.ja
@@ -1,3 +1,11 @@
+2005-04-13
+
+ * src/rfc2015.c: pgp_sign(): 括弧が抜けていたのを修正。
+ result->signatures が NULL でないかどうかをチェック(~/.gnupg が
+ 存在しない場合にクラッシュするのを修正)。
+ * src/sigstatus.c: gpgmegtk_sig_status_to_string(): signature が
+ NULL でないかどうかをチェック。
+
2005-04-12
* version 1.9.8
diff --git a/configure.in b/configure.in
index 65c5103a..53fbf666 100644
--- a/configure.in
+++ b/configure.in
@@ -9,7 +9,7 @@ MINOR_VERSION=9
MICRO_VERSION=8
INTERFACE_AGE=0
BINARY_AGE=0
-EXTRA_VERSION=
+EXTRA_VERSION=+svn
VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$EXTRA_VERSION
dnl set $target
diff --git a/src/rfc2015.c b/src/rfc2015.c
index 769488eb..4560e67d 100644
--- a/src/rfc2015.c
+++ b/src/rfc2015.c
@@ -659,8 +659,8 @@ pgp_encrypt ( gpgme_data_t plain, gpgme_key_t kset[] )
err = gpgme_data_new (&cipher);
if (!err) {
gpgme_set_armor (ctx, 1);
- err = (gpgme_data_seek(plain, 0, SEEK_SET) == -1) ?
- gpgme_error_from_errno(errno) : 0;
+ err = (gpgme_data_seek(plain, 0, SEEK_SET) == -1) ?
+ gpgme_error_from_errno(errno) : 0;
if (!err) {
/*
* Note -- it is currently the responsibility of select-keys.c::
@@ -673,7 +673,8 @@ pgp_encrypt ( gpgme_data_t plain, gpgme_key_t kset[] )
}
if (err) {
- debug_print ("encryption failed: %s\n", gpgme_strerror (err));
+ g_warning ("pgp_encrypt(): encryption failed: %s\n",
+ gpgme_strerror (err));
gpgme_data_release (cipher);
cipher = NULL;
}
@@ -997,7 +998,7 @@ pgp_sign (gpgme_data_t plain, GSList *key_list, gboolean clearsign,
gpgme_set_armor (ctx, 1);
gpgme_signers_clear (ctx);
for (p = key_list; p != NULL; p = p->next) {
- err = gpgme_signers_add (ctx, (gpgme_key_t) p->data);
+ err = gpgme_signers_add (ctx, (gpgme_key_t) p->data);
if (err)
goto leave;
}
@@ -1011,9 +1012,9 @@ pgp_sign (gpgme_data_t plain, GSList *key_list, gboolean clearsign,
err = gpgme_op_sign (ctx, plain, sig,
clearsign ? GPGME_SIG_MODE_CLEAR : GPGME_SIG_MODE_DETACH);
}
- if (!err)
+ if (!err) {
result = gpgme_op_sign_result(ctx);
- if (result) {
+ if (result && result->signatures) {
if (gpgme_get_protocol(ctx) == GPGME_PROTOCOL_OpenPGP) {
*micalg = g_strdup_printf("PGP-%s", gpgme_hash_algo_name(
result->signatures->hash_algo));
@@ -1021,16 +1022,19 @@ pgp_sign (gpgme_data_t plain, GSList *key_list, gboolean clearsign,
*micalg = g_strdup(gpgme_hash_algo_name(
result->signatures->hash_algo));
}
+ } else {
+ /* can't get result (maybe no signing key?) */
+ err = GPG_ERR_USER_1;
}
+ }
leave:
if (err) {
gpgmegtk_free_passphrase();
- debug_print ("signing failed: %s\n", gpgme_strerror (err));
+ g_warning ("pgp_sign(): signing failed: %s\n", gpgme_strerror (err));
gpgme_data_release (sig);
sig = NULL;
- }
- else {
+ } else {
debug_print ("signing succeeded\n");
}
@@ -1265,7 +1269,7 @@ rfc2015_clearsign (const gchar *file, GSList *key_list)
gpgme_data_t text = NULL;
gpgme_data_t sigdata = NULL;
ssize_t bytesRW = 0;
- gchar *micalg;
+ gchar *micalg = NULL;
if ((fp = fopen(file, "rb")) == NULL) {
FILE_OP_ERROR(file, "fopen");
diff --git a/src/sigstatus.c b/src/sigstatus.c
index a9b88ea2..5f197a99 100644
--- a/src/sigstatus.c
+++ b/src/sigstatus.c
@@ -222,6 +222,8 @@ const gchar *gpgmegtk_sig_status_to_string(gpgme_signature_t signature,
{
const gchar *result = "?";
+ g_return_val_if_fail(signature != NULL, result);
+
switch (gpg_err_code(signature->status)) {
case GPG_ERR_NO_DATA:
result = _("No signature found");