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

Re: [Lost] [Patch] init_execute relative Pfade und $PATH



Antoine Kaufmann schrieb:
+    strncpy(program, cmd, program_len);
+    program[program_len] = 0;
+    printf("program: '%s' ", program);

Debugausgabe, und dazu noch eine englische. Schande! ;-)

+    // Pruefen ob es sich um einen Pfad handelt
+    abs_path = io_get_absolute_path(program);
+    f = fopen(abs_path, "r");
+    if (f == NULL) {

Zum einen fände ich es grundsätzlich schöner, wenn die kurze Bedingung der then-Pfad ist, ansonsten habe ich bis zum else schon wieder vergessen, worum es geht.

In diesem speziellen Fall (und unten nochmal) öffnest du f ja nur zum prüfen, ob es das gibt. Hatten wir nicht neulich ein access() aufgenommen?

+            printf("dir: '%s'  pp: '%s'\n", dir, program_path);

Debugausgabe

+            // Pruefen ob die Datei existiert
+            f = fopen(program_path, "r");
+            if (f != NULL) {
+                // Wenn ja, wird ein Puffer alloziert und abs_path gesetzt
+                abs_path = malloc(strlen(program_path) + 1);

Memleak. abs_path muß erst freigegeben werden.

+    // Wenn kein Programm gefunden wurde, wird abgebrochen
+    if (abs_path == NULL) {
+        return 0;
+    }

Kann abs_path jemals NULL sein? Wenn ja, ist es so geschickt, oben fopen mit NULL als Dateinamen aufzurufen?

=== commmands.c
==================================================================
+    if (wait == TRUE) {
+        while (waitpid(pid, &status, 0) != pid);
+    }
+    return status;

Wenn wait == FALSE, ist status undefiniert.