prevent segv by not calling tdb_traverse and tdb_close if tdb_open_log
authorHerb Lewis <herb@samba.org>
Mon, 10 Sep 2001 22:31:59 +0000 (22:31 +0000)
committerHerb Lewis <herb@samba.org>
Mon, 10 Sep 2001 22:31:59 +0000 (22:31 +0000)
returns NULL.

source/utils/status.c

index 47379fd57cf5a261e5a601cae29749fc1b535285..23e2f4a63ce2d377c30de2b2aa0e4ceb1635534a 100644 (file)
@@ -621,32 +621,34 @@ static int traverse_sessionid(TDB_CONTEXT *tdb, TDB_DATA kbuf, TDB_DATA dbuf, vo
        tdb = tdb_open_log(lock_path("sessionid.tdb"), 0, TDB_DEFAULT, O_RDONLY, 0);
        if (!tdb) {
                d_printf("sessionid.tdb not initialised\n");
-       }
-
-       if (locks_only) goto locks;
+       } else {
+               if (locks_only) goto locks;
 
-       d_printf("\nSamba version %s\n",VERSION);
-       d_printf("PID     Username      Group         Machine                        \n");
-       d_printf("-------------------------------------------------------------------\n");
+               d_printf("\nSamba version %s\n",VERSION);
+               d_printf("PID     Username      Group         Machine                        \n");
+               d_printf("-------------------------------------------------------------------\n");
 
-       tdb_traverse(tdb, traverse_sessionid, NULL);
-       tdb_close(tdb);
+               tdb_traverse(tdb, traverse_sessionid, NULL);
+               tdb_close(tdb);
+       }
   
        tdb = tdb_open_log(lock_path("connections.tdb"), 0, TDB_DEFAULT, O_RDONLY, 0);
        if (!tdb) {
                d_printf("connections.tdb not initialised\n");
-       }  else if (verbose) {
-               d_printf("Opened status file %s\n", fname);
-       }
+       }  else 
+               if (verbose) {
+                       d_printf("Opened status file %s\n", fname);
+               }
 
-       if (brief) 
-               exit(0);
-       
-       d_printf("\nService      pid     machine       Connected at\n");
-       d_printf("-------------------------------------------------------\n");
+               if (brief) 
+                       exit(0);
+               
+               d_printf("\nService      pid     machine       Connected at\n");
+               d_printf("-------------------------------------------------------\n");
 
-       tdb_traverse(tdb, traverse_fn1, NULL);
-       tdb_close(tdb);
+               tdb_traverse(tdb, traverse_fn1, NULL);
+               tdb_close(tdb);
+       }
 
  locks:
        if (processes_only) exit(0);