[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [tyndur-devel] [PATCH] libinit: Falscherkennung in init_execute() korrigiert.
Am Sonntag, 31. Mai 2009 17:37 schrieb Alexander Siol:
> From: Alexander Siol <alex@alex.(none)>
Du willst deine Mailadresse in der git-Config richtig setzen.
> ! 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>
Es gibt keinen Grund für POSIX-Header, wenn man auch die nativen nehmen
kann...
>
> // 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) {
...denn in diesem Fall hat der native Header dir.h nämlich sogar ein
is_directory()...
> // Den absoluten Pfad freigeben
> free(abs_path);
> abs_path = NULL;
> + closedir(dir);
...und macht daher diese Zeile, die sowieso tab-damaged ist, überflüssig ;-)