PHP Bug when reusing variables by references

PHP Bug when reusing variables by references

I Just find a bug in PHP when you are reusing variables by references.

This is the example code:

$lines = array(
	'1' => array(
		'1A'
	),
	'2' => array(
		'2A',
		'2B',
		'2C'
	)
);

foreach($lines as &$items){
	foreach($items as $key => $value){
		if($value=='2B') unset($items[$key]);
	}
}

$items = array();
foreach($lines as $key => $items){
	print_r($items);
}

What this code should do, is to take the $lines array and delete the 2B value, but it doesn’t work like that, and is because it get crash when you use the $items variable in the second foreach and you already used it as a referece variable, even if you clean the $items variable with an empty array as you see in the code.

Just if you change the name or the $items variable in the second foreach it works fine.

https://bugs.php.net/bug.php?id=67608

Se nos ha caído un servidor

Rafael VegaHoy se nos ha caído un servidor  que nos bajo varias webs por unos minutos y he aprendido un termino nuevo que según vi es bastante común pero quizas muchos no lo conocen.

KERNEL PANIC, fue el error que dio el servidor que nos colapsó.

El Kernel Panic es un mensaje de error que arroja el sistema operativo cuando ocurre un problema interno del cual no se puede recuperar. Los kernel panic usualmente proveen información de depuración que es útil sólo para los desarrolladores del sistema operativo.

Intentos del sistema operativo para leer una dirección de memoria inválida o no permitida son una fuente común de kernel panics. El error también puede ocurrir como resultado de un fallo de hardware.

Es probable también que se presente si falta algún módulo que deba ir pegado al kernel dependiendo del hardware con el que se cuente.

El kernel panic fue introducido en una versión temprana de Unix, y demostró una gran diferencia entre la filosofía de diseño de Unix y su predecesor Multics.

Un kernel panic puede ser producto de una explotación de una vulnerabilidad en algún módulo del núcleo de forma malintencionada, logrando corromper la integridad del sistema.

Vulnerabilidad en wordpress

Para los que usan wordpress deben corregir este error.
Resulta que hay una vulnerabilidad en el archivo wp-trackbacks.php que puede hacernos caer el servicios si nos hacen peticiones por algo mas de 5 minutos, la solución es buscar la linea de código

$charset = $_POST['charset'];

y reemplazarla por:

$charset = str_replace(”,”,”",$_POST['charset']);
if(is_array($charset)) { exit; }
$charset = str_replace(”,”,”»,$_POST[‘charset’]);

if(is_array($charset)) { exit; }