2005-10-19 [colin] 1.9.15cvs77
[claws.git] / src / plugins / pgpinline / pgpinline.c
index 742e1be8be797a167f30d516d56c9c26a2aa9cef..dab84d42d10784e619b9ff0f6c5a2f87a2021b2c 100644 (file)
@@ -15,7 +15,7 @@
  *
  * 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.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  */
 
 #ifdef HAVE_CONFIG_H
@@ -116,13 +116,6 @@ static gboolean pgpinline_is_signed(MimeInfo *mimeinfo)
        if (!textdata)
                return FALSE;
        
-       if (data == NULL) {
-               data = pgpinline_new_privacydata();
-               mimeinfo->privacy = (PrivacyData *) data;
-       }
-       data->done_sigtest = TRUE;
-       data->is_signed = FALSE;
-
        if ((sigpos = strstr(textdata, sig_indicator)) == NULL) {
                g_free(textdata);
                return FALSE;
@@ -135,6 +128,11 @@ static gboolean pgpinline_is_signed(MimeInfo *mimeinfo)
 
        g_free(textdata);
 
+       if (data == NULL) {
+               data = pgpinline_new_privacydata();
+               mimeinfo->privacy = (PrivacyData *) data;
+       }
+       data->done_sigtest = TRUE;
        data->is_signed = TRUE;
 
        return TRUE;
@@ -167,7 +165,19 @@ static gint pgpinline_check_signature(MimeInfo *mimeinfo)
        /* gtk2: convert back from utf8 */
        tmp = conv_codeset_strdup(textdata, CS_UTF_8,
                        procmime_mimeinfo_get_parameter(mimeinfo, "charset"));
+       if (!tmp) {
+               tmp = conv_codeset_strdup(textdata, CS_UTF_8,
+                       conv_get_locale_charset_str_no_utf8());
+       }
+       if (!tmp) {
+               g_warning("Can't convert charset to anything sane\n");
+               tmp = conv_codeset_strdup(textdata, CS_UTF_8, CS_US_ASCII);
+       }
        g_free(textdata);
+
+       if (!tmp)
+               return 0;
+
        textdata = g_strdup(tmp);
        g_free(tmp);
        
@@ -264,7 +274,7 @@ static MimeInfo *pgpinline_decrypt(MimeInfo *mimeinfo)
        PrivacyDataPGP *data = NULL;
        gpgme_ctx_t ctx;
        gchar *chars;
-       int len;
+       size_t len;
        
        if (gpgme_new(&ctx) != GPG_ERR_NO_ERROR)
                return NULL;
@@ -391,6 +401,10 @@ static gboolean pgpinline_sign(MimeInfo *mimeinfo, PrefsAccount *account)
        procmime_decode_content(msgcontent);
 
        fp = my_tmpfile();
+       if (fp == NULL) {
+               perror("my_tmpfile");
+               return FALSE;
+       }
        procmime_write_mimeinfo(msgcontent, fp);
        rewind(fp);
 
@@ -504,6 +518,10 @@ static gboolean pgpinline_encrypt(MimeInfo *mimeinfo, const gchar *encrypt_data)
        procmime_decode_content(msgcontent);
 
        fp = my_tmpfile();
+       if (fp == NULL) {
+               perror("my_tmpfile");
+               return FALSE;
+       }
        procmime_write_mimeinfo(msgcontent, fp);
        rewind(fp);