README-linux: updated to note that strace might not compile
with development kernels
bjm.c: sys_query_module: check if malloc succeeds
system.c: sys_cap[gs]et(): check if malloc succeeds, only malloc once
linux/syscallent.h: updated for 2.3.99pre3
linux/alpha/syscallent.h: updated for 2.3.99pre3, add all osf syscalls
even though Linux doesn't implement them
syscall.c: add global variables for MIPS registers as well
syscall.c: move global variables to before get_scno since that uses them
util.c: oops, misspelled defined
process.c: fix ptrace calls in change_syscall
mem.c: decode sys_madvise
Merge patch from Topi Miettinen <Topi.Miettinen@nic.fi>
+ add support for quotactl, fdatasync, mlock, mlockall, munlockall & acct
+ small fix for RLIMIT_* and RUSAGE_BOTH
+ enhace support for capget and capset
diff --git a/bjm.c b/bjm.c
index 0c0cf66..66cbb85 100644
--- a/bjm.c
+++ b/bjm.c
@@ -102,14 +102,19 @@
char* mod = data;
size_t idx;
- umoven(tcp, tcp->u_arg[2], tcp->u_arg[3], data);
- for (idx=0; idx<ret; idx++) {
- if (idx!=0)
- tprintf(",");
- tprintf(mod);
- mod+=strlen(mod)+1;
+ if (data==NULL) {
+ fprintf(stderr, "sys_query_module: No memory\n");
+ tprintf(" /* %Zu entries */ ", ret);
+ } else {
+ umoven(tcp, tcp->u_arg[2], tcp->u_arg[3], data);
+ for (idx=0; idx<ret; idx++) {
+ if (idx!=0)
+ tprintf(",");
+ tprintf(mod);
+ mod+=strlen(mod)+1;
+ }
+ free(data);
}
- free(data);
} else
tprintf(" /* %Zu entries */ ", ret);
tprintf("}, %Zu", ret);
@@ -122,12 +127,17 @@
struct module_symbol* sym = (struct module_symbol*)data;
size_t idx;
- umoven(tcp, tcp->u_arg[2], tcp->u_arg[3], data);
- for (idx=0; idx<ret; idx++) {
- tprintf("{name=%s, value=%lu} ", data+(long)sym->name, sym->value);
- sym++;
+ if (data==NULL) {
+ fprintf(stderr, "sys_query_module: No memory\n");
+ tprintf(" /* %Zu entries */ ", ret);
+ } else {
+ umoven(tcp, tcp->u_arg[2], tcp->u_arg[3], data);
+ for (idx=0; idx<ret; idx++) {
+ tprintf("{name=%s, value=%lu} ", data+(long)sym->name, sym->value);
+ sym++;
+ }
+ free(data);
}
- free(data);
} else
tprintf(" /* %Zu entries */ ", ret);
tprintf("}, %Zd", ret);