summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
authorHerb Lewis <herb@samba.org>2001-09-10 22:31:59 +0000
committerHerb Lewis <herb@samba.org>2001-09-10 22:31:59 +0000
commitafdf93836b59d5d9ede2ac0f3298d99471872829 (patch)
tree2f4d7d13f9ab4067957e05195cbd4c953c55fa5c /source
parentb2ed211df0cad2013fd8ff67f48bf73962cc1d39 (diff)
downloadsamba-afdf93836b59d5d9ede2ac0f3298d99471872829.tar.gz
samba-afdf93836b59d5d9ede2ac0f3298d99471872829.tar.xz
samba-afdf93836b59d5d9ede2ac0f3298d99471872829.zip
prevent segv by not calling tdb_traverse and tdb_close if tdb_open_log
returns NULL.
Diffstat (limited to 'source')
-rw-r--r--source/utils/status.c38
1 files changed, 20 insertions, 18 deletions
diff --git a/source/utils/status.c b/source/utils/status.c
index 47379fd57cf..23e2f4a63ce 100644
--- a/source/utils/status.c
+++ b/source/utils/status.c
@@ -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);