[ this message is Bcc:ed to openafs-bugs ]

The function bucoord/dump.c::bc_StartDmpRst() is called with incorrect argument types in bucoord/commands.c. It takes two pointer variables:

        struct sockaddr_in *adestServer
        struct bc_dumpSchedule *dsptr


However, in bucoord/commands.c, bc_VolRestoreCmd(), bc_DiskRestoreCmd(), bc_VolsetRestoreCmd(), and bc_DumpCmd() were passing '0' as arguments instead of NULL. Because there is no prototype for bc_StartDmpRst() this results in a crash on 64-bit Linux. (when running 'volrestore' from an interactive backup session)

One instance of this problem was fixed in the CVS delta:

        backup-dump-parameter-fix-20060411

however, there were several other instances left unfixed.


Here is a patch which fixes the crash by passing NULL instead of 0 to the pointer arguments. I did not address the underlying problem, which is the lack of prototypes in this part of the source. I won't be able to get around to it today but I might have an opportunity over the weekend or next week.


Thanks,

Chris Wing
[EMAIL PROTECTED]



--- openafs-1.4.x-20060630/src/bucoord/commands.c.orig  2006-04-11 
15:28:20.000000000 -0400
+++ openafs-1.4.x-20060630/src/bucoord/commands.c       2006-06-30 
16:30:53.000000000 -0400
@@ -1243,7 +1243,7 @@
                       &destServ, destPartition, fromDate, newExt, oldFlag,
                       /*parentDump */ 0, /*dumpLevel */ 0,
                       bc_Restorer, ports, portCount,
-                      /*dumpSched */ 0, /*append */ 0, dontExecute);
+                      /*dumpSched */ NULL, /*append */ 0, dontExecute);
     if (code)
        com_err(whoami, code, "; Failed to queue restore");

@@ -1406,7 +1406,7 @@
                       &destServ, destPartition, fromDate, newExt, oldFlag,
                       /*parentDump */ 0, /*dumpLevel */ 0,
                       bc_Restorer, ports, portCount,
-                      /*dumpSched */ 0, /*append */ 0, dontExecute);
+                      /*dumpSched */ NULL, /*append */ 0, dontExecute);
     if (code)
        com_err(whoami, code, "; Failed to queue restore");

@@ -1564,11 +1564,11 @@

     /* Perform the call to start the restore */
     code = bc_StartDmpRst(bc_globalConfig, "disk", "restore", volsToRestore,
-                         /*destserver */ 0, /*destpartition */ 0, fromDate,
+                         /*destserver */ NULL, /*destpartition */ 0, fromDate,
                          newExt, oldFlag,
                          /*parentDump */ 0, /*dumpLevel */ 0,
                          bc_Restorer, ports, portCount,
-                         /*dumpSched */ 0, /*append */ 0, dontExecute);
+                         /*dumpSched */ NULL, /*append */ 0, dontExecute);
     if (code)
        com_err(whoami, code, "; Failed to queue restore");

@@ -1962,7 +1962,7 @@
        return (0);

     code = bc_StartDmpRst(bc_globalConfig, dumpPath, vsName, volsToDump,
-                         /*destServer */ 0, /*destPartition */ 0,
+                         /*destServer */ NULL, /*destPartition */ 0,
                          /*fromDate */ 0,
                          /*newExt */ NULL, /*oldFlag */ 0,
                          parent, level, bc_Dumper, portp, /*portCount */ 1,
_______________________________________________
OpenAFS-devel mailing list
[email protected]
https://lists.openafs.org/mailman/listinfo/openafs-devel

Reply via email to