Use file descriptor instead of path for mutt_decode_save_attachment()
[apps/madmutt.git] / lib-crypt / pgp.c
index 3c3e0f7..3dd37d5 100644 (file)
@@ -454,6 +454,7 @@ static int pgp_check_traditional_one_body (FILE * fp, BODY * b,
   char tempfile[_POSIX_PATH_MAX];
   char buf[HUGE_STRING];
   FILE *tfp;
+  int tempfd;
 
   short sgn = 0;
   short enc = 0;
@@ -465,13 +466,14 @@ static int pgp_check_traditional_one_body (FILE * fp, BODY * b,
   if (tagged_only && !b->tagged)
     return 0;
 
-  mutt_mktemp (tempfile);
-  if (mutt_decode_save_attachment (fp, b, tempfile, 0, 0) != 0) {
+  tempfd = m_tempfd(tempfile, sizeof(tempfile), NONULL(Tempdir), NULL);
+
+  if (mutt_decode_save_attachment (fp, b, tempfd, 0) != 0) {
     unlink (tempfile);
     return 0;
   }
 
-  if ((tfp = fopen (tempfile, "r")) == NULL) {
+  if ((tfp = fdopen (tempfd, "r")) == NULL) {
     unlink (tempfile);
     return 0;
   }
@@ -695,7 +697,7 @@ BODY *pgp_decrypt_part (BODY * a, STATE * s, FILE * fpout, BODY * p)
   while (fgets (buf, sizeof (buf) - 1, pgpout) != NULL) {
     len = m_strlen(buf);
     if (len > 1 && buf[len - 2] == '\r')
-      strcpy (buf + len - 2, "\n");     /* __STRCPY_CHECKED__ */
+      m_strcpy(buf + len - 2, len - 2,  "\n");
     fputs (buf, fpout);
   }
 
@@ -1022,8 +1024,7 @@ char *pgp_findKeys (address_t * to, address_t * cc, address_t * bcc)
       last = &((*last)->next);
   }
 
-  if (fqdn)
-    rfc822_qualify (tmp, fqdn);
+  rfc822_qualify (tmp, fqdn);
 
   address_list_uniq(tmp);
 
@@ -1048,8 +1049,7 @@ char *pgp_findKeys (address_t * to, address_t * cc, address_t * bcc)
         /* check for e-mail address */
         if ((t = strchr (keyID, '@')) &&
             (addr = rfc822_parse_adrlist (NULL, keyID))) {
-          if (fqdn)
-            rfc822_qualify (addr, fqdn);
+          rfc822_qualify (addr, fqdn);
           q = addr;
         }
         else
@@ -1087,7 +1087,7 @@ char *pgp_findKeys (address_t * to, address_t * cc, address_t * bcc)
   bypass_selection:
     keylist_size += m_strlen(keyID) + 4;
     p_realloc(&keylist, keylist_size);
-    sprintf (keylist + keylist_used, "%s0x%s", keylist_used ? " " : "", /* __SPRINTF_CHECKED__ */
+    sprintf (keylist + keylist_used, "%s0x%s", keylist_used ? " " : "",
              keyID);
     keylist_used = m_strlen(keylist);
 
@@ -1388,7 +1388,7 @@ BODY *pgp_traditional_encryptsign (BODY * a, int flags, char *keylist)
 int pgp_send_menu (HEADER * msg, int *redraw)
 {
   pgp_key_t p;
-  char input_signas[SHORT_STRING];
+  char input_signas[STRING];
 
   char prompt[LONG_STRING];