summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjolsa@redhat.com <jolsa@redhat.com>2011-05-25 15:09:44 +0200
committerJiri Olsa <Jiri Olsa jolsa@redhat.com>2011-05-29 19:05:36 +0200
commit7a2b45ec4873e2d51e0d92197dc412a2edb21b32 (patch)
tree9562adcdaa041bd0686ae916849d8fb51a9dd70e
parentec2866f5e5236a260b4d823a3435c2704f28bed5 (diff)
downloadlatrace-7a2b45ec4873e2d51e0d92197dc412a2edb21b32.tar.gz
latrace-7a2b45ec4873e2d51e0d92197dc412a2edb21b32.tar.xz
latrace-7a2b45ec4873e2d51e0d92197dc412a2edb21b32.zip
args - replacing destination strings with void pointers
As per David Gilbert's email: On library functions like strcpy() where there is a destination string, latrace -A ends up trying to print out the destination buffer which may be completely invalid. Maybe it's worth doing the same trick that ltrace does, and just declare the destination parameters as void* until we handle bad characters somehow, replacing destination char pointers with void pointers
-rw-r--r--ChangeLog1
-rw-r--r--etc/latrace.d/headers/stdio.h8
-rw-r--r--etc/latrace.d/headers/string.h16
3 files changed, 13 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog
index 0bac9b6..e5d8801 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,7 @@
* adding SIGTERM/SIGINT handlers,
refactoring lt_run to check the latrace got killed
* adding tests for latrace termination
+ * args - replacing destination strings with void pointers
2011-05-24 Jiri Olsa <olsajiri@gmail.com>
* args - use isprint to decide whether to print the character,
diff --git a/etc/latrace.d/headers/stdio.h b/etc/latrace.d/headers/stdio.h
index c0f37b8..eac2228 100644
--- a/etc/latrace.d/headers/stdio.h
+++ b/etc/latrace.d/headers/stdio.h
@@ -39,12 +39,12 @@ void setlinebuf(FILE *stream);
int fprintf(FILE *stream, char *format);
int printf(char *format);
-int sprintf(char *s, char *format);
+int sprintf(void *s, char *format);
int vfprintf(FILE *s, char *format);
int vprintf(char *format);
-int vsprintf(char *s, char *format);
-int snprintf(char *s, size_t maxlen, char *format);
-int vsnprintf(char *s, size_t maxlen, char *format);
+int vsprintf(void *s, char *format);
+int snprintf(void *s, size_t maxlen, char *format);
+int vsnprintf(void *s, size_t maxlen, char *format);
int vasprintf(void *ptr, char *f);
int __asprintf(void *ptr, char *fmt);
int asprintf(void *ptr, char *fmt);
diff --git a/etc/latrace.d/headers/string.h b/etc/latrace.d/headers/string.h
index 98c2cb3..20445e7 100644
--- a/etc/latrace.d/headers/string.h
+++ b/etc/latrace.d/headers/string.h
@@ -12,10 +12,10 @@ void* rawmemchr(void *s, int c);
void* memrchr(void *s, int c, size_t n);
-char* strcpy(char *dest, char *src);
-char* strncpy(char *dest, char *src, size_t n);
-char* strcat(char *dest, char *src);
-char* strncat(char *dest, char *src, size_t n);
+char* strcpy(void *dest, char *src);
+char* strncpy(void *dest, char *src, size_t n);
+char* strcat(void *dest, char *src);
+char* strncat(void *dest, char *src, size_t n);
int strcmp(char *s1, char *s2);
int strncmp(char *s1, char *s2, size_t n);
int strcoll(char *s1, char *s2);
@@ -76,10 +76,10 @@ int strncasecmp_l(char *s1, char *s2, size_t n, __locale_t loc);
char* strsep(void *stringp, char *delim);
int strverscmp(char *s1, char *s2);
char* strsignal(int sig);
-char* __stpcpy(char *dest, char *src);
-char* stpcpy(char *dest, char *src);
-char* __stpncpy(char *dest, char *src, size_t n);
-char* stpncpy(char *dest, char *src, size_t n);
++char* __stpcpy(void *dest, char *src);
++char* stpcpy(void *dest, char *src);
++char* __stpncpy(void *dest, char *src, size_t n);
++char* stpncpy(void *dest, char *src, size_t n);
char* strfry(char *string);
void* memfrob(void *s, size_t n);
char* basename(char *filename);