* @category Horde * @copyright 2004-2017 Horde LLC * @license http://www.horde.org/licenses/gpl GPL * @package Passwd */ class Passwd_Driver_Procopen extends Passwd_Driver { /** */ protected function _changePassword($user, $oldpass, $newpass) { $descr = array( 0 => array('pipe', 'r'), 1 => array('pipe', 'w'), 2 => array('pipe', 'w') ); $output = ''; $process = @proc_open($this->_params['program'], $descr, $pipes); if (is_resource($process)) { fwrite($pipes[0], "$user\n"); fwrite($pipes[0], "$oldpass\n"); fwrite($pipes[0], "$newpass\n"); fclose($pipes[0]); while (!feof($pipes[1])) { $output .= fgets($pipes[1], 1024); } fclose($pipes[1]); while (!feof($pipes[2])) { $output .= fgets($pipes[2], 1024); } fclose($pipes[2]); $return_value = proc_close($process); } else { $return_value = -1; } $output .= " (Exit Status: $return_value)"; if ($return_value != 0) { throw new Passwd_Exception($output); } } }