diff options
author | Juan Cespedes <cespedes@debian.org> | 1998-04-29 20:21:48 +0200 |
---|---|---|
committer | Juan Cespedes <cespedes@debian.org> | 1998-04-29 20:21:48 +0200 |
commit | 666da8b03c6ba375606fff621f8dc4866a818531 (patch) | |
tree | a75018e673065df3e71b0493fb3e329267cfa731 | |
parent | ac3db297f7c6f08b02a7edfb32e441875fd7c1d7 (diff) | |
download | ltrace-666da8b03c6ba375606fff621f8dc4866a818531.tar.gz |
Version: 0.3.1
* setgid programs had their uid and gid swapped! Fixed.
-rw-r--r-- | debian/changelog | 6 | ||||
-rw-r--r-- | etc/ltrace.conf | 14 | ||||
-rw-r--r-- | execute_program.c | 4 |
3 files changed, 22 insertions, 2 deletions
diff --git a/debian/changelog b/debian/changelog index 68a7f23..dbda358 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +ltrace (0.3.1) frozen unstable; urgency=low + + * setgid programs had their uid and gid swapped! Fixed. + + -- Juan Cespedes <cespedes@debian.org> Wed, 29 Apr 1998 19:25:11 +0200 + ltrace (0.3.0) unstable; urgency=low * Preliminary autoconf support diff --git a/etc/ltrace.conf b/etc/ltrace.conf index a0cecb7..452b960 100644 --- a/etc/ltrace.conf +++ b/etc/ltrace.conf @@ -41,6 +41,7 @@ void endgrent(void); addr getgrnam(string); ; libintl.h +string __dcgettext(string,string,int); string bindtextdomain(string, string); string textdomain(string); @@ -75,6 +76,7 @@ addr signal(int,addr); ; stdio.h int fclose(file); +int feof(file); int ferror(file); int fflush(file); char fgetc(file); @@ -92,6 +94,7 @@ int remove(string); int snprintf(+string2,int,format); int sprintf(+string,format); string tempnam(string,string); +int vfprintf(file,string,addr); ; stdlib.h int __strtol_internal(string,addr,int); @@ -149,6 +152,10 @@ void syslog(int,format); ; term.h int tputs(string, int, addr); +; termios.h +int tcgetattr(int,addr); +int tcsetattr(int,int,addr); + ; time.h string ctime(addr); addr gmtime(addr); @@ -157,11 +164,15 @@ uint strftime(+string2,uint,string,addr); int time(addr); ; unistd.h +int chdir(string); int chown(string,int,int); int close(int); string crypt(string,addr); int execlp(string,string,addr,addr,addr); +int execv(string,addr); +int fchdir(int); int fork(void); +int ftruncate(int,uint); string2 getcwd(addr,uint); int geteuid(void); int getegid(void); @@ -172,6 +183,7 @@ int getopt(int,addr,string); int getpid(void); int getuid(void); int isatty(int); +int link(string,string); int mkdir(string,octal); int read(int, +string0, uint); int rmdir(string); @@ -182,8 +194,10 @@ int setuid(int); uint sleep(uint); int symlink(string,string); int sync(void); +int truncate(string,uint); string ttyname(int); int unlink(string); +void usleep(uint); int write(int, string3, uint); ; utmp.h diff --git a/execute_program.c b/execute_program.c index 081c0a9..663d8e9 100644 --- a/execute_program.c +++ b/execute_program.c @@ -27,8 +27,8 @@ void execute_program(struct process * sp, char **argv) perror("fork"); exit(1); } else if (!pid) { /* child */ - trace_me(); change_uid(sp); + trace_me(); execvp(sp->filename, argv); fprintf(stderr, "Can't execute `%s': %s\n", sp->filename, strerror(errno)); exit(1); @@ -80,7 +80,7 @@ static void change_uid(struct process * proc) run_euid = statbuf.st_uid; } if (statbuf.st_mode & S_ISGID) { - run_euid = statbuf.st_gid; + run_egid = statbuf.st_gid; } } if (setregid(run_gid, run_egid) < 0) { |