Code

bugfix: kill all left session children if SIGINT
[gosa.git] / gosa-si / gosa-si-bus
index 53b99c31f944ed010728abf098c365a366dd6a6e..3ab5e917a1853770a0c184e371614e855913b67d 100755 (executable)
@@ -34,6 +34,7 @@ use XML::Simple;
 use MIME::Base64;
 use File::Basename;
 use Digest::MD5  qw(md5 md5_hex md5_base64);
+use utf8;
 
 use GOSA::GosaSupportDaemon;
 use GOSA::DBsqlite;
@@ -482,10 +483,12 @@ sub create_ciphering {
 sub encrypt_msg {
     my ($msg, $key) = @_;
     my $my_cipher = &create_ciphering($key);
+    my $len;
     {
-      use bytes;
-      $msg = "\0"x(16-length($msg)%16).$msg;
+           use bytes;
+           $len= 16-length($msg)%16;
     }
+    $msg = "\0"x($len).$msg;
     $msg = $my_cipher->encrypt($msg);
     chomp($msg = &encode_base64($msg));
     # there are no newlines allowed inside msg
@@ -810,7 +813,7 @@ sub bus_input {
                 }
                 elsif( $target =~ /([0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2})/ ) {
                     # target is a mac address
-                    my $sql_statement = "SELECT * FROM bus_known_clients WHERE macaddress='$target'";
+                    my $sql_statement = "SELECT * FROM bus_known_clients WHERE macaddress LIKE '$target'";
                     my $query_res = $bus_known_clients_db->select_dbentry( $sql_statement );
                     if( 1 > keys(%{$query_res})) {
                         daemon_log("ERROR: there are more than one hosts in bus_known_clients_db with mac address '$target'", 1);
@@ -923,9 +926,9 @@ $SIG{CHLD} = 'IGNORE';
 
 # forward error messages to logfile
 if ( ! $foreground ) {
-       open STDIN, '/dev/null' or die "Can’t read /dev/null: $!";
-       open STDOUT, '>>/dev/null' or die "Can't write to /dev/null: $!";
-       open STDERR, '>>/dev/null' or die "Can't write to /dev/null: $!";
+  open( STDIN,  '+>/dev/null' );
+  open( STDOUT, '+>&STDIN'    );
+  open( STDERR, '+>&STDIN'    );
 }
 
 # Just fork, if we are not in foreground mode