]> git.pld-linux.org Git - packages/strace.git/commitdiff
- check umove() return value per devs suggestion
authorJakub Bogusz <qboosh@pld-linux.org>
Wed, 7 Oct 2009 20:24:10 +0000 (20:24 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    strace-semop.patch -> 1.2

strace-semop.patch

index 739d2064765621717bcf71940dd62eb6861d58f1..1bfcbc4961a6003ac27b908ad940948367b5990b 100644 (file)
@@ -1,5 +1,5 @@
 --- strace-4.5.18/ipc.c.orig   2007-01-15 21:25:52.000000000 +0100
-+++ strace-4.5.18/ipc.c        2009-09-30 17:48:38.080610937 +0200
++++ strace-4.5.18/ipc.c        2009-10-07 22:11:24.392613451 +0200
 @@ -152,6 +152,12 @@
        { 0,            NULL            },
  };
@@ -13,7 +13,7 @@
  int sys_msgget(tcp)
  struct tcb *tcp;
  {
-@@ -273,14 +279,34 @@
+@@ -273,14 +279,40 @@
  int sys_semop(tcp)
  struct tcb *tcp;
  {
 +                      tprintf(", %#lx {", tcp->u_arg[3]);
 +                      for(i = 0; i < tcp->u_arg[1]; i++) {
 +                              struct sembuf sb;
-+                              umove(tcp, tcp->u_arg[3]+i*sizeof(struct sembuf), &sb);
 +                              if(i != 0)
 +                                      tprintf(", ");
-+                              tprintf("{%u, %d, ", sb.sem_num, sb.sem_op);
-+                              printflags(semop_flags, sb.sem_flg, "SEM_???");
-+                              tprintf("}");
++                              if (umove(tcp, tcp->u_arg[3]+i*sizeof(struct sembuf), &sb) < 0)
++                                      tprintf("{???}");
++                              else {
++                                      tprintf("{%u, %d, ", sb.sem_num, sb.sem_op);
++                                      printflags(semop_flags, sb.sem_flg, "SEM_???");
++                                      tprintf("}");
++                              }
 +                      }
 +                      tprintf("}, %lu", tcp->u_arg[1]);
                } else {
 +                      tprintf(", %#lx {", tcp->u_arg[1]);
 +                      for(i = 0; i < tcp->u_arg[2]; i++) {
 +                              struct sembuf sb;
-+                              umove(tcp, tcp->u_arg[1]+i*sizeof(struct sembuf), &sb);
 +                              if(i != 0)
 +                                      tprintf(", ");
-+                              tprintf("{%u, %d, ", sb.sem_num, sb.sem_op);
-+                              printflags(semop_flags, sb.sem_flg, "SEM_???");
-+                              tprintf("}");
++                              if(umove(tcp, tcp->u_arg[1]+i*sizeof(struct sembuf), &sb) < 0)
++                                      tprintf("{???}");
++                              else {
++                                      tprintf("{%u, %d, ", sb.sem_num, sb.sem_op);
++                                      printflags(semop_flags, sb.sem_flg, "SEM_???");
++                                      tprintf("}");
++                              }
 +                      }
 +                      tprintf("}, %lu", tcp->u_arg[2]);
                }
        }
        return 0;
-@@ -290,15 +316,35 @@
+@@ -290,15 +322,41 @@
  int sys_semtimedop(tcp)
  struct tcb *tcp;
  {
 +                      tprintf(", %#lx {", tcp->u_arg[3]);
 +                      for(i = 0; i < tcp->u_arg[1]; i++) {
 +                              struct sembuf sb;
-+                              umove(tcp, tcp->u_arg[3]+i*sizeof(struct sembuf), &sb);
 +                              if(i != 0)
 +                                      tprintf(", ");
-+                              tprintf("{%u, %d, ", sb.sem_num, sb.sem_op);
-+                              printflags(semop_flags, sb.sem_flg, "SEM_???");
-+                              tprintf("}");
++                              if(umove(tcp, tcp->u_arg[3]+i*sizeof(struct sembuf), &sb) < 0)
++                                      tprintf("{???}");
++                              else {
++                                      tprintf("{%u, %d, ", sb.sem_num, sb.sem_op);
++                                      printflags(semop_flags, sb.sem_flg, "SEM_???");
++                                      tprintf("}");
++                              }
 +                      }
 +                      tprintf("}, %lu, ", tcp->u_arg[1]);
                        printtv(tcp, tcp->u_arg[5]);
 +                      tprintf(", %#lx {", tcp->u_arg[1]);
 +                      for(i = 0; i < tcp->u_arg[2]; i++) {
 +                              struct sembuf sb;
-+                              umove(tcp, tcp->u_arg[1]+i*sizeof(struct sembuf), &sb);
 +                              if(i != 0)
 +                                      tprintf(", ");
-+                              tprintf("{%u, %d, ", sb.sem_num, sb.sem_op);
-+                              printflags(semop_flags, sb.sem_flg, "SEM_???");
-+                              tprintf("}");
++                              if(umove(tcp, tcp->u_arg[1]+i*sizeof(struct sembuf), &sb) < 0)
++                                      tprintf("{???}");
++                              else {
++                                      tprintf("{%u, %d, ", sb.sem_num, sb.sem_op);
++                                      printflags(semop_flags, sb.sem_flg, "SEM_???");
++                                      tprintf("}");
++                              }
 +                      }
 +                      tprintf("}, %lu, ", tcp->u_arg[2]);
                        printtv(tcp, tcp->u_arg[3]);
This page took 0.209684 seconds and 4 git commands to generate.