From ada336bdf4ad7e198575ee656c1d72016ffbef9b Mon Sep 17 00:00:00 2001 From: Michael M Slusarz Date: Thu, 29 Jul 2010 16:25:41 -0600 Subject: [PATCH] Fix improper handling of upload errors. --- imp/pgp.php | 31 +++++++++++++++++++++++-------- imp/smime.php | 35 +++++++++++++++++++++++------------ 2 files changed, 46 insertions(+), 20 deletions(-) diff --git a/imp/pgp.php b/imp/pgp.php index b7a3d1965..f735d6143 100644 --- a/imp/pgp.php +++ b/imp/pgp.php @@ -35,11 +35,16 @@ case 'process_import_public_key': $notification->push(sprintf(_("PGP Public Key for \"%s (%s)\" was successfully added."), $sig['name'], $sig['email']), 'horde.success'); } $imp_pgp->reloadWindow($vars->reload); + $error = false; } catch (Horde_Browser_Exception $e) { $notification->push(_("No PGP public key imported."), 'horde.error'); - throw new IMP_Exception($e); + $error = true; } catch (Horde_Exception $e) { $notification->push($e); + $error = true; + } + + if ($error) { $vars->actionID = 'import_public_key'; $imp_pgp->importKeyDialog('process_import_public_key', $vars->reload); } @@ -50,8 +55,8 @@ case 'import_personal_public_key': break; case 'process_import_personal_public_key': - $vars->actionID = 'import_personal_public_key'; /* Check the public key. */ + $error = false; try { $publicKey = $imp_pgp->getImportKey($vars->import_key); if (($key_info = $imp_pgp->pgpPacketInformation($publicKey)) && @@ -60,7 +65,7 @@ case 'process_import_personal_public_key': /* Key contains private key too, don't allow to add this * as public key. */ $notification->push(_("Imported key contains your PGP private key. Only add your public key in the first step!"), 'horde.error'); - $imp_pgp->importKeyDialog('process_import_personal_public_key', $vars->reload); + $error = true; } else { /* Success in importing public key - Move on to private * key now. */ @@ -73,20 +78,25 @@ case 'process_import_personal_public_key': /* Invalid public key imported - Redo public key import * screen. */ $notification->push(_("Invalid personal PGP public key."), 'horde.error'); - $imp_pgp->importKeyDialog('process_import_personal_public_key', $vars->reload); + $error = true; } } catch (Horde_Browser_Exception $e) { $notification->push(_("No personal PGP public key imported."), 'horde.error'); - throw new IMP_Exception($e); + $error = true; } catch (Horde_Exception $e) { $notification->push($e); + $error = true; + } + + if ($error) { + $vars->actionID = 'import_personal_public_key'; $imp_pgp->importKeyDialog('process_import_personal_public_key', $vars->reload); } break; case 'process_import_personal_private_key': - $vars->actionID = 'import_personal_private_key'; /* Check the private key. */ + $error = false; try { $privateKey = $imp_pgp->getImportKey($vars->import_key); if (($key_info = $imp_pgp->pgpPacketInformation($privateKey)) && @@ -100,13 +110,18 @@ case 'process_import_personal_private_key': /* Invalid private key imported - Redo private key import * screen. */ $notification->push(_("Invalid personal PGP private key."), 'horde.error'); - $imp_pgp->importKeyDialog('process_import_personal_private_key', $vars->reload); + $error = true; } } catch (Horde_Browser_Exception $e) { $notification->push(_("No personal PGP private key imported."), 'horde.error'); - throw new IMP_Exception($e); + $error = true; } catch (Horde_Exception $e) { $notification->push($e); + $error = true; + } + + if ($error) { + $vars->actionID = 'import_personal_private_key'; $imp_pgp->importKeyDialog('process_import_personal_private_key', $vars->reload); } break; diff --git a/imp/smime.php b/imp/smime.php index dc7d95b2a..125e4049a 100644 --- a/imp/smime.php +++ b/imp/smime.php @@ -24,25 +24,30 @@ $vars = Horde_Variables::getDefaultVariables(); switch ($vars->actionID) { case 'import_public_key': $imp_smime->importKeyDialog('process_import_public_key', $vars->reload); - exit; + break; case 'process_import_public_key': + $error = false; try { $publicKey = $imp_smime->getImportKey($vars->import_key); /* Add the public key to the storage system. */ $imp_smime->addPublicKey($publicKey); - $notification->push(_("S/MIME Public Key successfully added."), 'horde.success'); + $notification->push(_("S/MIME public key successfully added."), 'horde.success'); $imp_smime->reloadWindow($vars->reload); } catch (Horde_Browser_Exception $e) { $notification->push(_("No S/MIME public key imported."), 'horde.error'); - throw new IMP_Exception($e); + $error = true; } catch (Horde_Exception $e) { $notification->push($e); + $error = true; + } + + if ($error) { $vars->actionID = 'import_public_key'; $imp_smime->importKeyDialog('process_import_public_key', $vars->reload); } - exit; + break; case 'view_public_key': case 'info_public_key': @@ -56,23 +61,23 @@ case 'info_public_key': } else { $imp_smime->printCertInfo($key); } - exit; + break; case 'view_personal_public_key': $imp_smime->textWindowOutput('S/MIME Personal Public Key', $imp_smime->getPersonalPublicKey()); - exit; + break; case 'info_personal_public_key': $imp_smime->printCertInfo($imp_smime->getPersonalPublicKey()); - exit; + break; case 'view_personal_private_key': $imp_smime->textWindowOutput('S/MIME Personal Private Key', $imp_smime->getPersonalPrivateKey()); - exit; + break; case 'import_personal_certs': $imp_smime->importKeyDialog('process_import_personal_certs', $vars->reload); - exit; + break; case 'process_import_personal_certs': try { @@ -80,14 +85,20 @@ case 'process_import_personal_certs': $imp_smime->addFromPKCS12($pkcs12, $vars->upload_key_pass, $vars->upload_key_pk_pass); $notification->push(_("S/MIME Public/Private Keypair successfully added."), 'horde.success'); $imp_smime->reloadWindow($vars->reload); + $error = false; } catch (Horde_Browser_Exception $e) { - throw new IMP_Exception($e); + $notification->push(_("Personal S/MIME certificates NOT imported."), 'horde.error'); + $error = true; } catch (Horde_Exception $e) { $notification->push(_("Personal S/MIME certificates NOT imported: ") . $e->getMessage(), 'horde.error'); + $error = true; + } + + if ($error) { $vars->actionID = 'import_personal_certs'; $imp_smime->importKeyDialog('process_import_personal_certs', $vars->reload); } - exit; + break; case 'save_attachment_public_key': /* Retrieve the key from the message. */ @@ -104,5 +115,5 @@ case 'save_attachment_public_key': } catch (Horde_Exception $e) { $notification->push(_("No Certificate found"), 'horde.error'); } - exit; + break; } -- 2.11.0