svn commit: r192943 - head/usr.bin/truss

Giorgos Keramidas keramida at freebsd.org
Thu May 28 02:30:40 UTC 2009


On Thu, 28 May 2009 00:38:24 +0000 (UTC), Xin LI <delphij at FreeBSD.org> wrote:
> Author: delphij
> Date: Thu May 28 00:38:24 2009
> New Revision: 192943
> URL: http://svn.freebsd.org/changeset/base/192943
>
> Log:
>   Correct off-by-one issue in truss(1) which happens when system call number
>   is nsyscalls.
>
>   PR:		bin/134916
>   Submitted by:	Steven Hartland <steven hartland multiplay co uk>
>   MFC after:	2 weeks

Thank you!

I've been running with precisely the same patch locally for some time,
but didn't manage to get it tested well enough to commit it :-)

The only local diff I have now from /head is a minor change that wraps
lines that are at the same time already wrapped *and* too long.  If that
looks useful as a followup change please feel free to use it:

%%%
diff -r b88f7e077f9c usr.bin/truss/amd64-fbsd.c
--- a/usr.bin/truss/amd64-fbsd.c	Thu May 21 02:47:46 2009 +0000
+++ b/usr.bin/truss/amd64-fbsd.c	Thu May 28 05:10:58 2009 +0300
@@ -141,8 +141,8 @@
   }
 
   fsc.number = syscall_num;
-  fsc.name =
-    (syscall_num < 0 || syscall_num > nsyscalls) ?  NULL : syscallnames[syscall_num];
+  fsc.name = (syscall_num < 0 || syscall_num >= nsyscalls) ? NULL :
+      syscallnames[syscall_num];
   if (!fsc.name) {
     fprintf(trussinfo->outfile, "-- UNKNOWN SYSCALL %d --\n", syscall_num);
   }
diff -r b88f7e077f9c usr.bin/truss/amd64-fbsd32.c
--- a/usr.bin/truss/amd64-fbsd32.c	Thu May 21 02:47:46 2009 +0000
+++ b/usr.bin/truss/amd64-fbsd32.c	Thu May 28 05:10:58 2009 +0300
@@ -151,8 +151,7 @@
   }
 
   fsc.number = syscall_num;
-  fsc.name =
-    (syscall_num < 0 || syscall_num > nsyscalls) ? NULL :
+  fsc.name = (syscall_num < 0 || syscall_num >= nsyscalls) ? NULL :
       freebsd32_syscallnames[syscall_num];
   if (!fsc.name) {
     fprintf(trussinfo->outfile, "-- UNKNOWN SYSCALL %d --\n", syscall_num);
diff -r b88f7e077f9c usr.bin/truss/amd64-linux32.c
--- a/usr.bin/truss/amd64-linux32.c	Thu May 21 02:47:46 2009 +0000
+++ b/usr.bin/truss/amd64-linux32.c	Thu May 28 05:10:58 2009 +0300
@@ -123,8 +123,8 @@
   syscall_num = regs.r_rax;
 
   fsc.number = syscall_num;
-  fsc.name =
-    (syscall_num < 0 || syscall_num > nsyscalls) ? NULL : linux32_syscallnames[syscall_num];
+  fsc.name = (syscall_num < 0 || syscall_num >= nsyscalls) ? NULL :
+      linux32_syscallnames[syscall_num];
   if (!fsc.name) {
     fprintf(trussinfo->outfile, "-- UNKNOWN SYSCALL %d --\n", syscall_num);
   }
diff -r b88f7e077f9c usr.bin/truss/i386-fbsd.c
--- a/usr.bin/truss/i386-fbsd.c	Thu May 21 02:47:46 2009 +0000
+++ b/usr.bin/truss/i386-fbsd.c	Thu May 28 05:10:58 2009 +0300
@@ -146,8 +146,8 @@
   }
 
   fsc.number = syscall_num;
-  fsc.name =
-    (syscall_num < 0 || syscall_num > nsyscalls) ? NULL : syscallnames[syscall_num];
+  fsc.name = (syscall_num < 0 || syscall_num >= nsyscalls) ? NULL :
+      syscallnames[syscall_num];
   if (!fsc.name) {
     fprintf(trussinfo->outfile, "-- UNKNOWN SYSCALL %d --\n", syscall_num);
   }
diff -r b88f7e077f9c usr.bin/truss/i386-linux.c
--- a/usr.bin/truss/i386-linux.c	Thu May 21 02:47:46 2009 +0000
+++ b/usr.bin/truss/i386-linux.c	Thu May 28 05:10:58 2009 +0300
@@ -123,8 +123,8 @@
   syscall_num = regs.r_eax;
 
   fsc.number = syscall_num;
-  fsc.name =
-    (syscall_num < 0 || syscall_num > nsyscalls) ? NULL : linux_syscallnames[syscall_num];
+  fsc.name = (syscall_num < 0 || syscall_num >= nsyscalls) ? NULL :
+      linux_syscallnames[syscall_num];
   if (!fsc.name) {
     fprintf(trussinfo->outfile, "-- UNKNOWN SYSCALL %d --\n", syscall_num);
   }
diff -r b88f7e077f9c usr.bin/truss/ia64-fbsd.c
--- a/usr.bin/truss/ia64-fbsd.c	Thu May 21 02:47:46 2009 +0000
+++ b/usr.bin/truss/ia64-fbsd.c	Thu May 28 05:10:58 2009 +0300
@@ -135,8 +135,8 @@
     syscall_num = (int)*parm_offset++;
 
   fsc.number = syscall_num;
-  fsc.name = (syscall_num < 0 || syscall_num > nsyscalls)
-      ? NULL : syscallnames[syscall_num];
+  fsc.name = (syscall_num < 0 || syscall_num >= nsyscalls) ? NULL :
+      syscallnames[syscall_num];
   if (!fsc.name) {
     fprintf(trussinfo->outfile, "-- UNKNOWN SYSCALL %d --\n", syscall_num);
   }
diff -r b88f7e077f9c usr.bin/truss/powerpc-fbsd.c
--- a/usr.bin/truss/powerpc-fbsd.c	Thu May 21 02:47:46 2009 +0000
+++ b/usr.bin/truss/powerpc-fbsd.c	Thu May 28 05:10:58 2009 +0300
@@ -148,8 +148,8 @@
   }
 
   fsc.number = syscall_num;
-  fsc.name =
-    (syscall_num < 0 || syscall_num > nsyscalls) ? NULL : syscallnames[syscall_num];
+  fsc.name = (syscall_num < 0 || syscall_num >= nsyscalls) ? NULL :
+      syscallnames[syscall_num];
   if (!fsc.name) {
     fprintf(trussinfo->outfile, "-- UNKNOWN SYSCALL %d --\n", syscall_num);
   }
diff -r b88f7e077f9c usr.bin/truss/sparc64-fbsd.c
--- a/usr.bin/truss/sparc64-fbsd.c	Thu May 21 02:47:46 2009 +0000
+++ b/usr.bin/truss/sparc64-fbsd.c	Thu May 28 05:10:58 2009 +0300
@@ -144,8 +144,8 @@
   }
 
   fsc.number = syscall_num;
-  fsc.name =
-    (syscall_num < 0 || syscall_num > nsyscalls) ? NULL : syscallnames[syscall_num];
+  fsc.name = (syscall_num < 0 || syscall_num >= nsyscalls) ? NULL :
+      syscallnames[syscall_num];
   if (!fsc.name) {
     fprintf(trussinfo->outfile, "-- UNKNOWN SYSCALL %d --\n", syscall_num);
   }
%%%


More information about the svn-src-all mailing list