clean up config
This commit is contained in:
parent
f12aa4c540
commit
23d1834812
|
@ -19,15 +19,8 @@ let
|
|||
START_USER_SERVICES = NO
|
||||
|
||||
[DNS]
|
||||
#HELPER_PATH = ${config.security.wrapperDir}/
|
||||
BINARY = ${config.security.wrapperDir}/gnunet-service-dns
|
||||
|
||||
#[EXIT]
|
||||
#HELPER_PATH = ${config.security.wrapperDir}/
|
||||
|
||||
#[VPN]
|
||||
#HELPER_PATH = ${config.security.wrapperDir}/
|
||||
|
||||
${extraOptions}
|
||||
'';
|
||||
|
||||
|
|
|
@ -0,0 +1,114 @@
|
|||
diff --git a/nss/nsswitch.c b/nss/nsswitch.c
|
||||
index 3c48b4b85e..0d823e7ad2 100644
|
||||
--- a/nss/nsswitch.c
|
||||
+++ b/nss/nsswitch.c
|
||||
@@ -337,6 +337,8 @@ known_compare (const void *p1, const void *p2)
|
||||
static int
|
||||
nss_load_library (service_user *ni)
|
||||
{
|
||||
+ char *ld_library_path;
|
||||
+
|
||||
if (ni->library == NULL)
|
||||
{
|
||||
/* This service has not yet been used. Fetch the service
|
||||
@@ -366,6 +368,19 @@ nss_load_library (service_user *ni)
|
||||
".so"),
|
||||
__nss_shlib_revision);
|
||||
|
||||
+ if (ni->path != NULL)
|
||||
+ {
|
||||
+ /* Construct new LD_LIBRARY_PATH. */
|
||||
+ ld_library_path = malloc (strlen (getenv ("LD_LIBRARY_PATH"))
|
||||
+ + strlen (ni->path)
|
||||
+ + 1);
|
||||
+ __stpcpy (__stpcpy (__stpcpy (ld_library_path,
|
||||
+ ni->path),
|
||||
+ ":"),
|
||||
+ getenv ("LD_LIBRARY_PATH"));
|
||||
+ setenv ("LD_LIBRARY_PATH", ld_library_path, 1);
|
||||
+ }
|
||||
+
|
||||
ni->library->lib_handle = __libc_dlopen (shlib_name);
|
||||
if (ni->library->lib_handle == NULL)
|
||||
{
|
||||
@@ -622,6 +637,7 @@ nss_parse_service_list (const char *line)
|
||||
{
|
||||
service_user *new_service;
|
||||
const char *name;
|
||||
+ const char *path;
|
||||
|
||||
while (isspace (line[0]))
|
||||
++line;
|
||||
@@ -631,14 +647,14 @@ nss_parse_service_list (const char *line)
|
||||
|
||||
/* Read <source> identifier. */
|
||||
name = line;
|
||||
- while (line[0] != '\0' && !isspace (line[0]) && line[0] != '[')
|
||||
+ while (line[0] != '\0' && !isspace (line[0]) && line[0] != '['
|
||||
+ && line[0] != ':')
|
||||
++line;
|
||||
if (name == line)
|
||||
return result;
|
||||
|
||||
-
|
||||
new_service = (service_user *) malloc (sizeof (service_user)
|
||||
- + (line - name + 1));
|
||||
+ + line - name + 1);
|
||||
if (new_service == NULL)
|
||||
return result;
|
||||
|
||||
@@ -652,8 +668,22 @@ nss_parse_service_list (const char *line)
|
||||
new_service->actions[2 + NSS_STATUS_RETURN] = NSS_ACTION_RETURN;
|
||||
new_service->library = NULL;
|
||||
new_service->known = NULL;
|
||||
+ new_service->path = NULL;
|
||||
new_service->next = NULL;
|
||||
|
||||
+ if (line[0] == ':')
|
||||
+ {
|
||||
+ /* Read path of the shared object */
|
||||
+ ++line;
|
||||
+ path = line;
|
||||
+ while (line[0] != '\0' && !isspace (line[0]) && line[0] != '[')
|
||||
+ ++line;
|
||||
+ if (name == line)
|
||||
+ return result;
|
||||
+ new_service->path = (char *) malloc (line - path + 1);
|
||||
+ *((char *) __mempcpy (new_service->path, path, line - path)) = '\0';
|
||||
+ }
|
||||
+
|
||||
while (isspace (line[0]))
|
||||
++line;
|
||||
|
||||
@@ -756,6 +786,8 @@ nss_parse_service_list (const char *line)
|
||||
continue;
|
||||
|
||||
finish:
|
||||
+ if (new_service->path != NULL)
|
||||
+ free (new_service->path);
|
||||
free (new_service);
|
||||
return result;
|
||||
}
|
||||
@@ -884,6 +916,9 @@ free_database_entries (name_database_entry *entry)
|
||||
if (service->known != NULL)
|
||||
__tdestroy (service->known, free);
|
||||
|
||||
+ if (service->path != NULL)
|
||||
+ free (service->path);
|
||||
+
|
||||
service = service->next;
|
||||
free (olds);
|
||||
}
|
||||
diff --git a/nss/nsswitch.h b/nss/nsswitch.h
|
||||
index 63573b9ebc..e31dba8358 100644
|
||||
--- a/nss/nsswitch.h
|
||||
+++ b/nss/nsswitch.h
|
||||
@@ -68,6 +68,8 @@ typedef struct service_user
|
||||
service_library *library;
|
||||
/* Collection of known functions. */
|
||||
void *known;
|
||||
+ /* Path of the shared object file (will be prepended to LD_LIBRARY_PATH) */
|
||||
+ char *path;
|
||||
/* Name of the service (`files', `dns', `nis', ...). */
|
||||
char name[0];
|
||||
} service_user;
|
Loading…
Reference in New Issue