On Sun, May 31 17:37, Alexander Siol wrote: > From: Alexander Siol <alex@alex.(none)> > > ! libinit: init_execute() hat im Falle von mit Programmen gleichnamigen Verzeichnissen beschlossen es gäbe keine Anwendung ohne den PATH zu durchsuchen. Dieser Fall wird jetzt abgefangen. > --- > trunk/src/modules/lib/init.c | 5 ++++- > 1 files changed, 4 insertions(+), 1 deletions(-) > > diff --git a/trunk/src/modules/lib/init.c b/trunk/src/modules/lib/init.c > index 0ffd982..2da7fa1 100644 > --- a/trunk/src/modules/lib/init.c > +++ b/trunk/src/modules/lib/init.c > @@ -33,6 +33,7 @@ > #include "stdlib.h" > #include <io.h> > #include <unistd.h> > +#include <dirent.h> > > // Kindprozess eintragen > extern void wait_child_add(pid_t pid); > @@ -105,16 +106,18 @@ pid_t init_execute(const char* cmd) > size_t program_len = strcspn(cmd, " "); > char program[program_len + 1]; > char* abs_path; > + DIR* dir = NULL; > > strncpy(program, cmd, program_len); > program[program_len] = 0; > > // Pruefen ob es sich um einen Pfad handelt > abs_path = io_get_absolute_path(program); > - if (!abs_path || (access(abs_path, X_OK) != 0)) { > + if (!abs_path || (access(abs_path, X_OK) != 0) || (dir = opendir(abs_path)) != 0) { Bist du dir hier sicher, dass das nicht mehr als 80 Zeichen sind? Das sieht mir nämlich verdächtig breit aus. > // Den absoluten Pfad freigeben > free(abs_path); > abs_path = NULL; > + closedir(dir); > > // Es handelt sich nicht um eine Pfadangabe, dann wird jetzt PATH > // durchsucht. -- Antoine Kaufmann <toni@xxxxxxxxxxxxxxxx>
Attachment:
pgpmtrSvdNqCl.pgp
Description: PGP signature