{"id":80,"date":"2008-04-30T10:26:37","date_gmt":"2008-04-30T08:26:37","guid":{"rendered":"http:\/\/www.orcero.org\/irbis\/blog\/como-hacer-un-buen-%e2%80%9cshow-me-the-code%e2%80%9d\/"},"modified":"2009-04-13T00:21:08","modified_gmt":"2009-04-12T22:21:08","slug":"como-hacer-un-buen-show-me-the-code","status":"publish","type":"post","link":"http:\/\/almacen\/blog\/index.php\/como-hacer-un-buen-show-me-the-code\/","title":{"rendered":"Como hacer un buen \u00abshow me the code\u00bb"},"content":{"rendered":"

La idea de hacer un buen \u201cshow me the code\u00bb no es del todo mala: ver el c\u00f3digo fuente de un proyecto te permite descubrir si puede dar problemas a la hora de mantenerlo; as\u00ed como si va a tener problemas de seguridad o de eficiencia. Tambi\u00e9n puede ser \u00fatil para peritajes. O para evaluar la habilidad de un programador al que queramos contratar para que nos haga un programa.<\/p>\n

Lo primero que debemos hacer es librarnos de ideas preconcebidas: si tomamos una base de c\u00f3digo lo suficientemente grande, y miramos con una ventanita lo suficientemente peque\u00f1a, vamos a encontrar lo que busquemos. <\/p>\n

Una vez que nos hemos librado de prejuicios, el siguiente paso ser\u00e1 tomar c\u00f3digo desarrollado por la persona. Esto es importante, porque si hacemos un an\u00e1lisis sobre c\u00f3digo de una persona distinta de la que queremos estudiar, no estudiaremos a la persona sobre la que tenemos inter\u00e9s. En el caso de proyectos de software libre, esto es especialmente delicado: es normal que un programa est\u00e9 realizado por muchas manos. El software libre es con frecuencia colaborativo, y podemos quedar en rid\u00edculo con facilidad si no sabemos identificar la autor\u00eda de un trozo de c\u00f3digo.<\/strong><\/p>\n

El primer paso es abrir el archivo, y mirar en la cabecera. Los programadores de software libre suelen indicar en la cabecera del c\u00f3digo qui\u00e9n es el autor. Por ejemplo, si tomamos un programa al azar, como pueda ser este<\/a>, vemos que el autor lo tenemos en la cabecera:<\/p>\n

<\/p>\n

(Est\u00e1 marcado con un circulo y unas flechitas por si alg\u00fan chaval de 20 a\u00f1os o alg\u00fan blogero influyente de la A-list tienen problemas en encontrarlo).<\/p>\n

Bueno, ya sabemos el autor al que debemos achacar el problema. Pero esto no tiene importancia, porque acabamos de encontrar un posible problema de seguridad que nos parece grav\u00edsimo. Lo adecuado aqu\u00ed es recordar que el CVS es una instant\u00e1nea en el pasado de un proyecto, y que el problema puede ya estar solucionado. Seguimos con la imagen:<\/p>\n

<\/p>\n

(Est\u00e1 marcado con un circulo y unas flechitas por si alg\u00fan chaval de 20 a\u00f1os o alg\u00fan blogero de la A-list tienen problemas en encontrarlo. Para ellos va tambi\u00e9n la explicaci\u00f3n de lo que es un CVS, por si lo desconocen).<\/p>\n

Bueno, esto parece que tiene cinco a\u00f1os… Y nadie parece haber tocado el c\u00f3digo en cuatro a\u00f1os… o el proyecto est\u00e1 muerto hace cuatro a\u00f1os, o ya nadie usa ese CVS. \u00bfQue hacemos? Preguntar al mantenedor cual es la versi\u00f3n m\u00e1s reciente. Si no, podemos estar dando un parte de seguridad de un error que puede que fuera corregido hace tres a\u00f1os, y que el CVS no lo utilice nadie desde hace cuatro a\u00f1os<\/strong>. Especialmente si es un proyecto cuya historia desconocemos y no nos hemos tomado la molestia de informarnos.<\/p>\n

Supongamos que con la emoci\u00f3n de un chaval de 20 a\u00f1os que ha encontrado un error de seguridad en un paquete con una complejidad que no entiende, queremos dar un parte de seguridad por el problema. \u00bfQue hacemos?<\/p>\n

Ni\u00f1os, vamos a aprender un concepto clave: como se dan los partes de posibles vulnerabilidades.<\/strong><\/p>\n