diff options
author | Herb Lewis <herb@samba.org> | 2001-09-10 22:31:59 +0000 |
---|---|---|
committer | Herb Lewis <herb@samba.org> | 2001-09-10 22:31:59 +0000 |
commit | afdf93836b59d5d9ede2ac0f3298d99471872829 (patch) | |
tree | 2f4d7d13f9ab4067957e05195cbd4c953c55fa5c /source | |
parent | b2ed211df0cad2013fd8ff67f48bf73962cc1d39 (diff) | |
download | samba-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.c | 38 |
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); |