[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [tyndur-devel] [PATCH] libinit: Falscherkennung in init_execute() korrigiert.



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: pgpL0CTHRd8CX.pgp
Description: PGP signature