Files
minishell/docs/errores_parser_executor_expansion.md
2026-02-12 22:03:59 +01:00

2.6 KiB

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.
  1. 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.
  1. 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

  1. 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.
  1. 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.
  1. 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.
  1. 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.
  1. 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.
  1. 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

  1. 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.
  1. Check de puntero nulo defectuoso en el loop principal.
  • Síntoma: if (minishell == NULL) desreferencia igualmente el puntero.
  • Referencia: src/minishell.c:35.
  1. 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.