aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuan Cespedes <cespedes@debian.org>1998-04-29 20:21:48 +0200
committerJuan Cespedes <cespedes@debian.org>1998-04-29 20:21:48 +0200
commit666da8b03c6ba375606fff621f8dc4866a818531 (patch)
treea75018e673065df3e71b0493fb3e329267cfa731
parentac3db297f7c6f08b02a7edfb32e441875fd7c1d7 (diff)
downloadltrace-666da8b03c6ba375606fff621f8dc4866a818531.tar.gz
Version: 0.3.1
* setgid programs had their uid and gid swapped! Fixed.
-rw-r--r--debian/changelog6
-rw-r--r--etc/ltrace.conf14
-rw-r--r--execute_program.c4
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) {