diff --git a/docs/errores_parser_executor_expansion.md b/docs/errores_parser_executor_expansion.md new file mode 100644 index 0000000..19d3944 --- /dev/null +++ b/docs/errores_parser_executor_expansion.md @@ -0,0 +1,56 @@ +# Errores detectados: parser, expansión y ejecutor + +## Críticos + +1. Segmentation fault al mezclar palabras y redirecciones en un mismo comando. +- Síntoma: `echo a > /tmp/x b` puede crashear. +- Referencias: `src/parser/parser.c:365`, `src/parser/parser.c:371`, `src/parser/parser.c:187`. + +2. Bucle infinito al recibir EOF en modo no interactivo. +- Síntoma: con `printf 'echo ok\n' | ./minishell` entra en loop imprimiendo prompt. +- Referencias: `src/minishell.c:40`, `src/minishell.c:42`. + +3. Parseo de pipes inválidos permite ejecución parcial o comandos inválidos. +- Síntoma: casos como `| echo x` o `echo hi |` no se bloquean correctamente. +- Referencias: `src/parser/parser.c:83`, `src/parser/parser.c:101`, `src/parser/parser.c:221`. + +## Altos + +4. Expansión de variables incompleta e incorrecta en casos especiales. +- Síntoma: `$FOO_BAR` y `$_X` fallan; `$?` y `$$` no se expanden correctamente. +- Referencias: `src/parser/parser.c:122`, `src/parser/parser.c:156`. + +5. No se eliminan comillas tras parseo/expansión. +- Síntoma: `echo "$HOME"` imprime comillas literales. +- Referencias: `src/parser/lexer.c:161`, `src/parser/parser.c:142`. + +6. No hay expansión en targets de redirección. +- Síntoma: `echo hi > $HOME_test` crea archivo literal `$HOME_test`. +- Referencias: `src/parser/parser.c:187`, `src/parser/parser.c:263`. + +7. Heredoc parseado pero no ejecutado en runtime. +- Síntoma: se almacena en `heredocs` pero no se aplica en ejecución. +- Referencias: `src/parser/parser.c:397`, `src/executor/redirections.c:68`, `src/executor/process_helpers.c:110`. + +8. Lexer acepta operadores inválidos (`||`, `>>>`, `><`) sin validación formal. +- Síntoma: tokenización por “runs” de metacaracteres produce entradas inválidas no rechazadas de forma robusta. +- Referencias: `src/parser/lexer.c:140`, `src/parser/lexer.c:77`. + +9. Errores de sintaxis no siempre fijan `exit_status` correcto (debería ser `2`). +- Síntoma: algunos casos acaban con salida `0`. +- Referencias: `src/executor/executor.c:20`, `src/parser/parser.c:101`. + +## Medios + +10. Resolución de rutas explícitas reporta mal algunos errores de permisos/ejecución. +- Síntoma: ruta existente no ejecutable puede terminar como `command not found`. +- Referencias: `src/executor/path_resolver.c:57`, `src/executor/path_resolver.c:59`, `src/executor/command_exec.c:81`. + +11. Check de puntero nulo defectuoso en el loop principal. +- Síntoma: `if (minishell == NULL)` desreferencia igualmente el puntero. +- Referencia: `src/minishell.c:35`. + +12. Falta manejo explícito de comillas no cerradas. +- Síntoma: entrada con comillas abiertas no genera error sintáctico dedicado. +- Referencia: `src/parser/lexer.c:159`. + diff --git a/out b/out deleted file mode 100644 index 4099407..0000000 --- a/out +++ /dev/null @@ -1 +0,0 @@ -23