@@ -403,10 +403,6 @@ char *nsdb_normalize_path(const char *pathname);
_Bool nsdb_pathname_is_utf8(const char *pathname);
void nsdb_free_fedfspathname(FedFsPathName *fpath);
-FedFsStatus nsdb_path_array_to_xdr(char * const *path_array,
- struct berval *xdr_path);
-FedFsStatus nsdb_xdr_to_path_array(const struct berval *xdr_path,
- char ***path_array);
FedFsStatus nsdb_path_array_to_posix(char * const *path_array,
char **pathname);
FedFsStatus nsdb_posix_to_path_array(const char *pathname,
@@ -390,49 +390,6 @@ nsdb_parse_singlevalue_str(char *attr, struct berval **values,
}
/**
- * Parse the value of an attribute containing an XDR-encoded FedFsPathname
- *
- * @param attr a NUL-terminated C string containing the name of an attribute
- * @param values pointer to a berval containing value of fedfsNfsPath attribute
- * @param result OUT: dynamically allocated string array containing XDR-decoded path
- * @return a FedFsStatus code
- *
- * Caller must free "result" with nsdb_free_string_array(3)
- */
-FedFsStatus
-nsdb_parse_singlevalue_xdrpath(char *attr, struct berval **values, char ***result)
-{
- char **tmp, *pathname;
- FedFsStatus retval;
-
- if (values[1] != NULL) {
- xlog(L_ERROR, "%s: Expecting only one value for attribute %s",
- __func__, attr);
- return FEDFS_ERR_NSDB_RESPONSE;
- }
-
- retval = nsdb_xdr_to_path_array(values[0], &tmp);
- if (retval != FEDFS_OK) {
- xlog(L_ERROR, "%s: Bad %s value", __func__, attr);
- return retval;
- }
-
- /* This is useful sanity checking while implementations
- * remain immature */
- retval = nsdb_path_array_to_posix(tmp, &pathname);
- if (retval != FEDFS_OK) {
- xlog(L_ERROR, "%s: Reverse conversion failed", __func__);
- return retval;
- }
-
- xlog(D_CALL, "%s: Attribute %s contains value \'%s\'",
- __func__, attr, pathname);
- free(pathname);
- *result = tmp;
- return FEDFS_OK;
-}
-
-/**
* Parse the values of a multi-value string attribute
*
* @param attr a NUL-terminated C string containing the name of an attribute
@@ -72,8 +72,6 @@ FedFsStatus nsdb_parse_singlevalue_int(char *attr,
FedFsStatus nsdb_parse_singlevalue_str(char *attr,
struct berval **values, char *result,
const size_t len);
-FedFsStatus nsdb_parse_singlevalue_xdrpath(char *attr,
- struct berval **values, char ***result);
FedFsStatus nsdb_parse_multivalue_str(char *attr,
struct berval **values, char ***result);
@@ -258,142 +258,6 @@ nsdb_free_fedfspathname(FedFsPathName *fpath)
}
/**
- * XDR encode an array of component strings
- *
- * @param path_array array of pointers to NUL-terminated C strings
- * @param xdr_path OUT: berval set up with XDR-encoded binary path
- * @return a FedFsStatus code
- *
- * Caller must free "xdr_path.bval" with ber_memfree(3t).
- */
-FedFsStatus
-nsdb_path_array_to_xdr(char * const *path_array, struct berval *xdr_path)
-{
- unsigned int p, count;
- size_t len, length;
- uint32_t *xdrbuf;
- char *component;
-
- if (path_array == NULL || xdr_path == NULL) {
- xlog(L_ERROR, "%s: Invalid argument", __func__);
- return FEDFS_ERR_INVAL;
- }
-
- for (length = XDR_UINT_BYTES, count = 0;
- path_array[count] != NULL;
- count++) {
- component = path_array[count];
- len = strlen(component);
-
- if (len == 0) {
- xlog(D_GENERAL, "%s: Zero-length component",
- __func__);
- return FEDFS_ERR_BADNAME;
- }
- if (!nsdb_pathname_is_utf8(component)) {
- xlog(D_GENERAL, "%s: Bad character in component",
- __func__);
- return FEDFS_ERR_BADCHAR;
- }
- length += XDR_UINT_BYTES + (nsdb_quadlen(len) << 2);
- }
-
- xdrbuf = (uint32_t *)ber_memcalloc(1, (ber_len_t)length);
- if (xdrbuf == NULL) {
- xlog(L_ERROR, "%s: Failed to allocate XDR buffer",
- __func__);
- return FEDFS_ERR_SVRFAULT;
- }
-
- xdrbuf[0] = htonl(count);
- for (p = 1, count = 0; path_array[count] != NULL; count++) {
- component = path_array[count];
- len = strlen(component);
-
- xdrbuf[p++] = htonl(len);
- memcpy(&xdrbuf[p], component, len);
- p += nsdb_quadlen(len);
- }
-
- xdr_path->bv_val = (char *)xdrbuf;
- xdr_path->bv_len = (ber_len_t)(length);
- return FEDFS_OK;
-}
-
-/**
- * XDR decode an XDR byte stream into an array of component strings
- *
- * @param xdr_path berval with XDR-encoded binary path
- * @param path_array OUT: pointer to array of pointers to NUL-terminated C strings
- * @return a FedFsStatus code
- *
- * Caller must free "path_array" with nsdb_free_string_array().
- *
- * NB: The use of fixed constants for NAME_MAX and PATH_MAX are required
- * here because, on the client side, the pathname likely does not
- * exist, so pathconf(3) cannot be used.
- */
-FedFsStatus
-nsdb_xdr_to_path_array(const struct berval *xdr_path, char ***path_array)
-{
- uint32_t *xdrbuf = (uint32_t *)xdr_path->bv_val;
- unsigned int len, i, p, count, length;
- char **result;
-
- if (xdr_path == NULL || path_array == NULL) {
- xlog(L_ERROR, "%s: Invalid argument", __func__);
- return FEDFS_ERR_INVAL;
- }
- length = nsdb_quadlen((unsigned int)xdr_path->bv_len);
- xlog(D_CALL, "%s: Received %u XDR'd quads", __func__, length);
-
- p = 0;
- count = ntohl(xdrbuf[p]);
- if (count == 0)
- return nsdb_alloc_zero_component_pathname(path_array);
-
- result = (char **)calloc(count + 1, sizeof(char *));
- if (result == NULL) {
- xlog(L_ERROR, "%s: Failed to allocate array",
- __func__);
- return FEDFS_ERR_SVRFAULT;
- }
-
- p = 1;
- for (i = 0; i < count; i++) {
- len = ntohl(xdrbuf[p++]);
- if (len > NAME_MAX) {
- nsdb_free_string_array(result);
- xlog(L_ERROR, "%s: Component too long", __func__);
- return FEDFS_ERR_BADNAME;
- }
- if (p + nsdb_quadlen(len) > length) {
- nsdb_free_string_array(result);
- xlog(L_ERROR, "%s: XDR buffer overflow", __func__);
- return FEDFS_ERR_BADXDR;
- }
-
- result[i] = strndup((char *)&xdrbuf[p], len);
- if (result[i] == NULL) {
- nsdb_free_string_array(result);
- xlog(L_ERROR, "%s: Failed to allocate component string",
- __func__);
- return FEDFS_ERR_SVRFAULT;
- }
-
- if (!nsdb_pathname_is_utf8(result[i])) {
- nsdb_free_string_array(result);
- xlog(D_GENERAL, "%s: Bad character in pathname", __func__);
- return FEDFS_ERR_BADCHAR;
- }
- p += nsdb_quadlen(len);
- }
-
- *path_array = result;
- return FEDFS_OK;
-}
-
-/**
* Construct a local POSIX-style pathname from an array of component strings
*
* @param path_array array of pointers to NUL-terminated C strings
fedfsNfsPath was the only attribute that required XDR-encoding of an NFSv4 pathname. Now that it's gone, we can remove these helpers. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> --- src/include/nsdb.h | 4 - src/libnsdb/ldap.c | 43 -------------- src/libnsdb/nsdb-internal.h | 2 - src/libnsdb/path.c | 136 ------------------------------------------- 4 files changed, 0 insertions(+), 185 deletions(-)