Looks like the function is still buggy. The new problem now is that it should close the /proc directory before exits. The patch with the minor fix is:
--- timeoutd.c.orig 2010-03-08 16:19:50.000000000 +0100 +++ timeoutd.c 2010-03-08 16:19:57.000000000 +0100 @@ -1603,6 +1603,7 @@ proc_file = fopen(path, "r"); if(!proc_file) { printf("error opening proc status file %s\n", path); + closedir(proc); /* close /proc before leaving*/ return 0; /* no child exists */ } while(!fscanf(proc_file, "PPid: %s", akt_pid)) @@ -1610,9 +1611,13 @@ fclose(proc_file); - if(atoi(akt_pid) == ppid) + if(atoi(akt_pid) == ppid) { + closedir(proc); /* close /proc before leaving*/ return (pid_t)atoi(cont->d_name); /* return pid of child */ + } } /* if(cont->d_type == 4) */ + + closedir(proc); /* close /proc before leaving*/ return 0; /* no child found */ } /* getchild(ppid) */ Hope I didn't miss something again...
signature.asc
Description: This is a digitally signed message part.