summaryrefslogtreecommitdiff
path: root/plugins/password/drivers/chpasswd.php
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/password/drivers/chpasswd.php')
-rw-r--r--plugins/password/drivers/chpasswd.php15
1 files changed, 7 insertions, 8 deletions
diff --git a/plugins/password/drivers/chpasswd.php b/plugins/password/drivers/chpasswd.php
index ed15a054e..5c6bde2d2 100644
--- a/plugins/password/drivers/chpasswd.php
+++ b/plugins/password/drivers/chpasswd.php
@@ -11,15 +11,16 @@
* @version 1.0
* @author Alex Cartwright <acartwright@mutinydesign.co.uk)
*/
-
+
function password_save($currpass, $newpass)
{
- $cmd = sprintf('echo \'%1$s:%2$s\' | %3$s; echo $?',
- addcslashes($_SESSION['username'], "'"),
- addcslashes($newpass, "'"),
- rcmail::get_instance()->config->get('password_chpasswd_cmd'));
+ $cmd = rcmail::get_instance()->config->get('password_chpasswd_cmd');
+ $username = $_SESSION['username'];
+
+ $handle = popen($cmd, "w");
+ fwrite($handle, "$username:$newpass");
- if (exec($cmd) == 0) {
+ if (pclose($handle) == 0) {
return PASSWORD_SUCCESS;
}
else {
@@ -33,5 +34,3 @@ function password_save($currpass, $newpass)
return PASSWORD_ERROR;
}
-
-?>