24 lines
909 B
Diff
24 lines
909 B
Diff
|
diff --git a/src/lualdap.c b/src/lualdap.c
|
||
|
index 9f5f64b..06bdd9e 100644
|
||
|
--- a/src/lualdap.c
|
||
|
+++ b/src/lualdap.c
|
||
|
@@ -1019,9 +1019,15 @@ static int lualdap_open_simple (lua_State *L) {
|
||
|
lualdap_setmeta (L, LUALDAP_CONNECTION_METATABLE);
|
||
|
conn->version = 0;
|
||
|
#if defined(LDAP_API_FEATURE_X_OPENLDAP) && LDAP_API_FEATURE_X_OPENLDAP >= 20300
|
||
|
- host_with_schema = malloc(strlen(host) + 8);
|
||
|
- strcpy(host_with_schema, "ldap://");
|
||
|
- strcat(host_with_schema, host);
|
||
|
+ host_with_schema = (char*) host;
|
||
|
+ if (strlen(host_with_schema)<8 || strncmp(host_with_schema, "ldap", 4)!=0
|
||
|
+ || ( strncmp(host_with_schema+4, "://", 3)!=0
|
||
|
+ && strncmp(host_with_schema+5, "://", 3)!=0)
|
||
|
+ ) {
|
||
|
+ host_with_schema = malloc(strlen(host) + 8);
|
||
|
+ strcpy(host_with_schema, "ldap://");
|
||
|
+ strcat(host_with_schema, host);
|
||
|
+ }
|
||
|
err = ldap_initialize(&conn->ld, host_with_schema);
|
||
|
free(host_with_schema);
|
||
|
host_with_schema = NULL;
|