libnsdb is intended to provide a public API, and as such, it is careful to check all incoming parameters. For some reason, though, it doesn't verify that host != NULL. Add that check.
Signed-off-by: Chuck Lever <[email protected]> --- src/libnsdb/administrator.c | 55 +++++++++++++++++++++++++++++++++++++++++++ src/libnsdb/fileserver.c | 35 +++++++++++++++++++++++++++ 2 files changed, 90 insertions(+) diff --git a/src/libnsdb/administrator.c b/src/libnsdb/administrator.c index 2e4aa0d..7fc5f71 100644 --- a/src/libnsdb/administrator.c +++ b/src/libnsdb/administrator.c @@ -276,6 +276,11 @@ FedFsStatus nsdb_create_fsn_s(nsdb_t host, const char *nce, const char *fsn_uuid, const unsigned int ttl, unsigned int *ldap_err) { + if (host == NULL) { + xlog(L_ERROR, "%s: Invalid host parameter", __func__); + return FEDFS_ERR_INVAL; + } + if (host->fn_ldap == NULL) { xlog(L_ERROR, "%s: NSDB not open", __func__); return FEDFS_ERR_INVAL; @@ -549,6 +554,11 @@ nsdb_delete_fsn_s(nsdb_t host, const char *nce, const char *fsn_uuid, FedFsStatus retval; char *dn; + if (host == NULL) { + xlog(L_ERROR, "%s: Invalid host parameter", __func__); + return FEDFS_ERR_INVAL; + } + if (host->fn_ldap == NULL) { xlog(L_ERROR, "%s: NSDB not open", __func__); return FEDFS_ERR_INVAL; @@ -891,6 +901,11 @@ nsdb_create_fsls_s(nsdb_t host, const char *nce, struct fedfs_fsl *fsls, struct fedfs_fsl *fsl, *progress; FedFsStatus retval; + if (host == NULL) { + xlog(L_ERROR, "%s: Invalid host parameter", __func__); + return FEDFS_ERR_INVAL; + } + if (host->fn_ldap == NULL) { xlog(D_GENERAL, "%s: NSDB not open", __func__); return FEDFS_ERR_INVAL; @@ -1072,6 +1087,11 @@ nsdb_delete_fsl_s(nsdb_t host, const char *nce, const char *fsl_uuid, FedFsStatus retval; char *dn; + if (host == NULL) { + xlog(L_ERROR, "%s: Invalid host parameter", __func__); + return FEDFS_ERR_INVAL; + } + if (host->fn_ldap == NULL) { xlog(L_ERROR, "%s: NSDB not open", __func__); return FEDFS_ERR_INVAL; @@ -1198,6 +1218,11 @@ nsdb_update_fsl_s(nsdb_t host, const char *nce, const char *fsl_uuid, FedFsStatus retval; char *dn; + if (host == NULL) { + xlog(L_ERROR, "%s: Invalid host parameter", __func__); + return FEDFS_ERR_INVAL; + } + if (host->fn_ldap == NULL) { xlog(L_ERROR, "%s: NSDB not open", __func__); return FEDFS_ERR_INVAL; @@ -1385,6 +1410,11 @@ nsdb_create_simple_nce_s(nsdb_t host, const char *parent, FedFsStatus retval; char *nce; + if (host == NULL) { + xlog(L_ERROR, "%s: Invalid host parameter", __func__); + return FEDFS_ERR_INVAL; + } + if (host->fn_ldap == NULL) { xlog(L_ERROR, "%s: NSDB not open", __func__); return FEDFS_ERR_INVAL; @@ -1475,6 +1505,11 @@ nsdb_update_nci_s(nsdb_t host, const char *nce, unsigned int *ldap_err) FedFsStatus retval; char *context; + if (host == NULL) { + xlog(L_ERROR, "%s: Invalid host parameter", __func__); + return FEDFS_ERR_INVAL; + } + if (host->fn_ldap == NULL) { xlog(L_ERROR, "%s: NSDB not open", __func__); return FEDFS_ERR_INVAL; @@ -1590,6 +1625,11 @@ nsdb_remove_nci_s(nsdb_t host, const char *nce, unsigned int *ldap_err) FedFsStatus retval; char *context; + if (host == NULL) { + xlog(L_ERROR, "%s: Invalid host parameter", __func__); + return FEDFS_ERR_INVAL; + } + if (host->fn_ldap == NULL) { xlog(L_ERROR, "%s: NSDB not open", __func__); return FEDFS_ERR_INVAL; @@ -1737,6 +1777,11 @@ nsdb_delete_nsdb_s(nsdb_t host, const char *nce, unsigned int *ldap_err) { FedFsStatus retval; + if (host == NULL) { + xlog(L_ERROR, "%s: Invalid host parameter", __func__); + return FEDFS_ERR_INVAL; + } + if (host->fn_ldap == NULL) { xlog(L_ERROR, "%s: NSDB not open", __func__); return FEDFS_ERR_INVAL; @@ -1780,6 +1825,11 @@ nsdb_attr_add_s(nsdb_t host, const char *dn, const char *attr, { struct berval bval; + if (host == NULL) { + xlog(L_ERROR, "%s: Invalid host parameter", __func__); + return FEDFS_ERR_INVAL; + } + if (host->fn_ldap == NULL) { xlog(L_ERROR, "%s: NSDB not open", __func__); return FEDFS_ERR_INVAL; @@ -1828,6 +1878,11 @@ nsdb_attr_delete_s(nsdb_t host, const char *dn, const char *attr, { struct berval bval; + if (host == NULL) { + xlog(L_ERROR, "%s: Invalid host parameter", __func__); + return FEDFS_ERR_INVAL; + } + if (host->fn_ldap == NULL) { xlog(L_ERROR, "%s: NSDB not open", __func__); return FEDFS_ERR_INVAL; diff --git a/src/libnsdb/fileserver.c b/src/libnsdb/fileserver.c index fdd0878..9484591 100644 --- a/src/libnsdb/fileserver.c +++ b/src/libnsdb/fileserver.c @@ -606,6 +606,11 @@ nsdb_get_ncedn_s(nsdb_t host, const char *naming_context, char **dn, { FedFsStatus retval; + if (host == NULL) { + xlog(L_ERROR, "%s: Invalid host parameter", __func__); + return FEDFS_ERR_INVAL; + } + if (host->fn_ldap == NULL) { xlog(L_ERROR, "%s: NSDB not open", __func__); return FEDFS_ERR_INVAL; @@ -726,6 +731,11 @@ nsdb_get_naming_contexts_s(nsdb_t host, char ***contexts, char **tmp; int rc; + if (host == NULL) { + xlog(L_ERROR, "%s: Invalid host parameter", __func__); + return FEDFS_ERR_INVAL; + } + if (host->fn_ldap == NULL) { xlog(L_ERROR, "%s: NSDB not open", __func__); return FEDFS_ERR_INVAL; @@ -1285,6 +1295,11 @@ nsdb_resolve_fsn_s(nsdb_t host, const char *nce, const char *fsn_uuid, FedFsStatus retval; int i, j; + if (host == NULL) { + xlog(L_ERROR, "%s: Invalid host parameter", __func__); + return FEDFS_ERR_INVAL; + } + if (host->fn_ldap == NULL) { xlog(L_ERROR, "%s: NSDB not open", __func__); return FEDFS_ERR_INVAL; @@ -1596,6 +1611,11 @@ nsdb_get_fsn_s(nsdb_t host, const char *nce, const char *fsn_uuid, FedFsStatus retval; int i, j; + if (host == NULL) { + xlog(L_ERROR, "%s: Invalid host parameter", __func__); + return FEDFS_ERR_INVAL; + } + if (host->fn_ldap == NULL) { xlog(L_ERROR, "%s: NSDB not open", __func__); return FEDFS_ERR_INVAL; @@ -1850,6 +1870,11 @@ nsdb_list_s(nsdb_t host, const char *nce, char ***fsns, unsigned int *ldap_err) FedFsStatus retval; int i, j; + if (host == NULL) { + xlog(L_ERROR, "%s: Invalid host parameter", __func__); + return FEDFS_ERR_INVAL; + } + if (host->fn_ldap == NULL) { xlog(L_ERROR, "%s: NSDB not open", __func__); return FEDFS_ERR_INVAL; @@ -1960,6 +1985,11 @@ nsdb_ping_nsdb_s(nsdb_t host, unsigned int *ldap_err) FedFsStatus retval; char **contexts = NULL; + if (host == NULL) { + xlog(L_ERROR, "%s: Invalid host parameter", __func__); + return FEDFS_ERR_INVAL; + } + if (host->fn_ldap == NULL) { xlog(L_ERROR, "%s: NSDB not open", __func__); return FEDFS_ERR_INVAL; @@ -2082,6 +2112,11 @@ nsdb_find_naming_context_s(nsdb_t host, const char *entry, char **context, char **contexts = NULL; FedFsStatus retval; + if (host == NULL) { + xlog(L_ERROR, "%s: Invalid host parameter", __func__); + return FEDFS_ERR_INVAL; + } + if (host->fn_ldap == NULL) { xlog(L_ERROR, "%s: NSDB not open", __func__); return FEDFS_ERR_INVAL; _______________________________________________ fedfs-utils-devel mailing list [email protected] https://oss.oracle.com/mailman/listinfo/fedfs-utils-devel
