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);