nsdb_read_nsdbname() should not cause a segfault if the securityFile
field has not been initialized.

Signed-off-by: Chuck Lever <[email protected]>
---

 src/libnsdb/nsdb.c |   14 +++++++++-----
 1 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/src/libnsdb/nsdb.c b/src/libnsdb/nsdb.c
index 891c35b..3bfb50e 100644
--- a/src/libnsdb/nsdb.c
+++ b/src/libnsdb/nsdb.c
@@ -603,10 +603,16 @@ nsdb_read_nsdbname(sqlite3 *db, nsdb_t host)
 
        switch (sqlite3_step(stmt)) {
        case SQLITE_ROW:
+               retval = FEDFS_ERR_SVRFAULT;
                xlog(D_GENERAL, "Found row for '%s:%u'", domainname, port);
-               certfile = strdup((const char *)sqlite3_column_text(stmt, 1));
-               if (certfile == NULL) {
-                       retval = FEDFS_ERR_SVRFAULT;
+               certfile = (char *)sqlite3_column_text(stmt, 1);
+               if (certfile != NULL) {
+                       certfile = strdup(certfile);
+                       if (certfile == NULL)
+                               break;
+               } else {
+                       xlog(D_GENERAL, "%s: Uninitialized securityFile field "
+                               "for NSDB %s:%u", __func__, domainname, port);
                        break;
                }
                def_binddn = (char *)sqlite3_column_text(stmt, 2);
@@ -614,7 +620,6 @@ nsdb_read_nsdbname(sqlite3 *db, nsdb_t host)
                        def_binddn = strdup(def_binddn);
                        if (def_binddn == NULL) {
                                free(certfile);
-                               retval = FEDFS_ERR_SVRFAULT;
                                break;
                        }
                }
@@ -624,7 +629,6 @@ nsdb_read_nsdbname(sqlite3 *db, nsdb_t host)
                        if (def_nce == NULL) {
                                free(def_binddn);
                                free(certfile);
-                               retval = FEDFS_ERR_SVRFAULT;
                                break;
                        }
                }


_______________________________________________
fedfs-utils-devel mailing list
[email protected]
https://oss.oracle.com/mailman/listinfo/fedfs-utils-devel

Reply via email to