diff --git a/app/Controller/EventsController.php b/app/Controller/EventsController.php index 065d6533c..ff53801fd 100644 --- a/app/Controller/EventsController.php +++ b/app/Controller/EventsController.php @@ -100,9 +100,9 @@ class EventsController extends AppController { // This is a lot faster (only additional query) than $this->Event->getRelatedEvents() $relatedEventIds = array(); $relatedEvents = array(); - foreach ($relatedAttributes as $relatedAttribute) { + foreach ($relatedAttributes as &$relatedAttribute) { if (null == $relatedAttribute) continue; - foreach ($relatedAttribute as $item) { + foreach ($relatedAttribute as &$item) { $relatedEventsIds[] = $item['Attribute']['event_id']; } } @@ -304,7 +304,7 @@ class EventsController extends AppController { App::uses('HttpSocket', 'Network/Http'); $HttpSocket = new HttpSocket(); - foreach ($servers as $server) { + foreach ($servers as &$server) { $this->Event->uploadEventToServer($this->Event->data, $server, $HttpSocket); } } @@ -394,7 +394,7 @@ class EventsController extends AppController { $body .= 'Risk : '.$event['Event']['risk']."\n"; $relatedEvents = $this->Event->getRelatedEvents($id); if (!empty($relatedEvents)) { - foreach ($relatedEvents as $relatedEvent){ + foreach ($relatedEvents as &$relatedEvent){ $body .= 'Related to : '.Configure::read('CyDefSIG.baseurl').'/events/view/'.$relatedEvent['Event']['id'].' ('.$relatedEvent['Event']['date'].')'."\n" ; } @@ -406,7 +406,7 @@ class EventsController extends AppController { $body_temp_other = ""; if (isset($event['Attribute'])) { - foreach ($event['Attribute'] as $attribute){ + foreach ($event['Attribute'] as &$attribute){ $line = '- '.$attribute['type'].str_repeat(' ', $appendlen - 2 - strlen( $attribute['type'])).': '.$attribute['value']."\n"; if ('other' == $attribute['type']) // append the 'other' attribute types to the bottom. $body_temp_other .= $line; @@ -435,7 +435,7 @@ class EventsController extends AppController { 'recursive' => 0, ) ); $alert_emails = Array(); - foreach ($alert_users as $user) { + foreach ($alert_users as &$user) { $alert_emails[] = $user['User']['email']; } // prepare the the unencrypted email @@ -463,7 +463,7 @@ class EventsController extends AppController { ) ); // encrypt the mail for each user and send it separately - foreach ($alert_users as $user) { + foreach ($alert_users as &$user) { // send the email $this->Email->from = Configure::read('CyDefSIG.email'); $this->Email->to = $user['User']['email']; @@ -568,7 +568,7 @@ class EventsController extends AppController { $body .= 'Risk : '.$event['Event']['risk']."\n"; $relatedEvents = $this->Event->getRelatedEvents($id); if (!empty($relatedEvents)) { - foreach ($relatedEvents as $relatedEvent){ + foreach ($relatedEvents as &$relatedEvent){ $body .= 'Related to : '.Configure::read('CyDefSIG.baseurl').'/events/view/'.$relatedEvent['Event']['id'].' ('.$relatedEvent['Event']['date'].')'."\n" ; } @@ -579,7 +579,7 @@ class EventsController extends AppController { $body .= 'Attributes :'."\n"; $body_temp_other = ""; if (!empty($event['Attribute'])) { - foreach ($event['Attribute'] as $attribute){ + foreach ($event['Attribute'] as &$attribute){ $line = '- '.$attribute['type'].str_repeat(' ', $appendlen - 2 - strlen( $attribute['type'])).': '.$attribute['value']."\n"; if ('other' == $attribute['type']) // append the 'other' attribute types to the bottom. $body_temp_other .= $line; @@ -610,7 +610,7 @@ class EventsController extends AppController { ); } - foreach ($org_members as $reporter) { + foreach ($org_members as &$reporter) { if (!empty($reporter['User']['gpgkey'])) { // import the key of the user into the keyring // this isn't really necessary, but it gives it the fingerprint necessary for the next step @@ -729,7 +729,7 @@ class EventsController extends AppController { $items = $this->Attribute->find('all', $params); $classtype = 'targeted-attack'; - foreach ($items as $item) { + foreach ($items as &$item) { # proto src_ip src_port direction dst_ip dst_port msg rule_content tag sid rev $rule_format_msg = 'msg: "CyDefSIG %s, Event '.$item['Event']['id'].', '.$item['Event']['risk'].'"'; $rule_format_reference = 'reference:url,'.Configure::read('CyDefSIG.baseurl').'/events/view/'.$item['Event']['id']; @@ -935,7 +935,7 @@ class EventsController extends AppController { print ("#

This part is not finished and might be buggy. Please report any issues.

\n"); print "#
 \n";
-        foreach ($rules as $rule)
+        foreach ($rules as &$rule)
             print $rule."\n";
         print "#
\n"; @@ -1046,7 +1046,7 @@ class EventsController extends AppController { // explode using the dot $explodedNames = explode('.', $name); // for each part - foreach ($explodedNames as $explodedName) { + foreach ($explodedNames as &$explodedName) { // count the lenght of the part, and add |length| before $length = strlen($explodedName); if ($length > 255) exit('ERROR: dns name is to long for RFC'); // LATER log correctly without dying diff --git a/app/Controller/ServersController.php b/app/Controller/ServersController.php index ca0be4a8e..f981a4ff6 100644 --- a/app/Controller/ServersController.php +++ b/app/Controller/ServersController.php @@ -165,7 +165,7 @@ class ServersController extends AppController { if (null != $event_ids) { App::import('Controller', 'Events'); $HttpSocket = new HttpSocket(); - foreach ($event_ids as $event_id) { + foreach ($event_ids as &$event_id) { $event = $this->Event->downloadEventFromServer( $event_id, $this->Server->data); @@ -258,7 +258,7 @@ class ServersController extends AppController { $this->loadModel('Attribute'); // upload each event separately and keep the results in the $successes and $fails arrays - foreach ($events as $event) { + foreach ($events as &$event) { $result = $this->Event->uploadEventToServer( $event, $this->Server->data, diff --git a/app/Controller/UsersController.php b/app/Controller/UsersController.php index 85cfc8fe8..966f77c67 100644 --- a/app/Controller/UsersController.php +++ b/app/Controller/UsersController.php @@ -179,7 +179,7 @@ class UsersController extends AppController { } if ($this->request->is('post') || $this->request->is('put')) { $fields = array(); - foreach (array_keys($this->request->data['User']) as $field) { + foreach (array_keys($this->request->data['User']) as &$field) { if($field != 'password') array_push($fields, $field); } if ("" != $this->request->data['User']['password']) @@ -308,7 +308,7 @@ class UsersController extends AppController { $sig_types = array_keys($this->Attribute->type_definitions); $graph_fields = ''; - foreach ($sig_types as $sig_type) { + foreach ($sig_types as &$sig_type) { if ($graph_fields != "") $graph_fields .= ", "; $graph_fields .= "'".$sig_type."'"; } @@ -318,7 +318,7 @@ class UsersController extends AppController { $graph_data=array(); $prev_row_org = ""; $i = -1; - foreach ($types_histogram as $row) { + foreach ($types_histogram as &$row) { if ($prev_row_org != $row['Event']['org']) { $i++; $graph_data[] = ""; $prev_row_org = $row['Event']['org']; diff --git a/app/Model/Event.php b/app/Model/Event.php index bc1d7a87d..95cab84ca 100644 --- a/app/Model/Event.php +++ b/app/Model/Event.php @@ -165,12 +165,12 @@ class Event extends AppModel { // first get a list of related event_ids // then do a single query to search for all the events with that id $relatedEventIds = Array(); - foreach ($this->data['Attribute'] as $attribute ) { + foreach ($this->data['Attribute'] as &$attribute ) { if ($attribute['type'] == 'other') continue; // sigs of type 'other' should not be matched against the others $conditions = array('Attribute.value =' => $attribute['value'], 'Attribute.type =' => $attribute['type']); $similar_attributes = $this->Attribute->find('all',array('conditions' => $conditions)); - foreach ($similar_attributes as $similar_attribute) { + foreach ($similar_attributes as &$similar_attribute) { if ($this->id == $similar_attribute['Attribute']['event_id']) continue; // same as this event, not needed in the list $relatedEventIds[] = $similar_attribute['Attribute']['event_id']; @@ -250,19 +250,19 @@ class Event extends AppModel { // cleanup the array from things we do not want to expose unset($event['Event']['org']); // remove value1 and value2 from the output - foreach($event['Event']['Attribute'] as $key => $attribute) { + foreach($event['Event']['Attribute'] as $key => &$attribute) { // do not keep attributes that are private - if ($event['Event']['Attribute'][$key]['private']) { + if ($attribute['private']) { unset($event['Event']['Attribute'][$key]); continue; // stop processing this } // remove value1 and value2 from the output - unset($event['Event']['Attribute'][$key]['value1']); - unset($event['Event']['Attribute'][$key]['value2']); + unset($attribute['value1']); + unset($attribute['value2']); // also add the encoded attachment - if ($this->Attribute->typeIsAttachment($event['Event']['Attribute'][$key]['type'])) { - $encoded_file = $this->Attribute->base64EncodeAttachment($event['Event']['Attribute'][$key]); - $event['Event']['Attribute'][$key]['data'] = $encoded_file; + if ($this->Attribute->typeIsAttachment($attribute['type'])) { + $encoded_file = $this->Attribute->base64EncodeAttachment($attribute); + $attribute['data'] = $encoded_file; } } @@ -349,7 +349,7 @@ class Event extends AppModel { $xml = Xml::build($response->body); $eventArray = Xml::toArray($xml); $event_ids=array(); - foreach ($eventArray['response']['Event'] as $event) { + foreach ($eventArray['response']['Event'] as &$event) { if (1 != $event['published']) continue; // do not keep non-published events $event_ids[] = $event['id']; }