* When downloading a signed message, and processing it, we use
commite797af007ccac26651f003bcead095f79994d5a0
authorEduardo Chappa <chappa@washington.edu>
Fri, 25 Apr 2014 23:31:25 +0000 (25 17:31 -0600)
committerEduardo Chappa <chappa@washington.edu>
Fri, 25 Apr 2014 23:31:25 +0000 (25 17:31 -0600)
treeb291d66106dcbfba990b6a8f4f9d0986fb76abe1
parent06525250787f8f774afa7f25901a8a805f2a29db
   * When downloading a signed message, and processing it, we use
     body->nested.part instead of b->nested.part in the
     do_detached_signature_verify function, and save its body and mime
     headers in create_local_cache. Now all signed messages should
     verify correctly.

   * Protect against potential crash bug in write_passfile function by
     checking if text != NULL. text can only be null if there are no
     passwords to save. We assume we could get write_passfile called
     with null arguments, so this is just to protect that.

   * Add handling of corner cases to several functions by initializing some
     variables. Reported and patched by James Jerkins.

   * When selecting the certificate/key pair to encrypt/decrypt the password
     file choose it in this order:
- if -pwdcertdir is given look for certificates there, if nothing
  there, we bail out;
- otherwise we look in the default directory, if anything there
  and it matches to be a key/cert pair, we use it;
- otherwise we check if smime_init() has been called. If not
  we call it;
- we check if a key/cert pair has been found with smime initialized,
  if so, use it and copy it to the default directory;
- if not, check if there is anything in the default smime directories
  (.alpine-smime/private and .alpine-smime/public), and in this
  case copy it to the default.
- otherwise we bail. We will eventually create a certificate/key
  pair for the user;
- finally, if we called smime_init(), we call smime_deinit().

Throughout this process, if smime_init() was not called before
we tried to get the cert/key pair we exit this process without
ps_global->smime->inited set, so that other process that need
to call smime_init() get the right structure initialized. This is
done because we might pick a cert/key pair to decrypt the password
file.
27 files changed:
alpine/folder.c
alpine/help.c
alpine/imap.c
alpine/mailcmd.c
alpine/mailindx.c
alpine/mailview.c
alpine/smime.c
pico/browse.c
pico/word.c
pith/adrbklib.c
pith/conf.c
pith/conftype.h
pith/filter.c
pith/help.c
pith/imap.c
pith/pine.hlp
pith/send.c
pith/smime.c
pith/smkeys.c
pith/smkeys.h
pith/state.c
pith/state.h
pith/string.c
pith/thread.c
po/Makefile.in
web/src/alpined.d/alpined.c
web/src/alpined.d/imap.c