From bbeb9db95d4c0fc683504f0702219ebe47fa2559 Mon Sep 17 00:00:00 2001 From: Andrew McNab Date: Fri, 9 Nov 2007 14:08:01 +0000 Subject: [PATCH] Sync --- org.gridsite.core/CHANGES | 5 +++++ org.gridsite.core/src/gaclexample.c | 2 +- org.gridsite.core/src/grst_gacl.c | 22 +++++++++++++++------- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/org.gridsite.core/CHANGES b/org.gridsite.core/CHANGES index bd0f444..4234759 100644 --- a/org.gridsite.core/CHANGES +++ b/org.gridsite.core/CHANGES @@ -1,3 +1,8 @@ +* Fri Nov 9 2007 Andrew McNab +- Many changes, including switch to AURI internal + format for credentials +* Fri Nov 9 2007 Andrew McNab +- ==== GridSite version 1.5.5 ==== * Wed Jun 13 2007 Andrew McNab - Include ctx->param->flags fix in mod_gridsite for OpenSSL 0.9.8 from Bruno Harbulot. diff --git a/org.gridsite.core/src/gaclexample.c b/org.gridsite.core/src/gaclexample.c index 32aaaa4..3d22c96 100644 --- a/org.gridsite.core/src/gaclexample.c +++ b/org.gridsite.core/src/gaclexample.c @@ -61,7 +61,7 @@ int main() /* build up an ACL, starting with a credential */ - cred = GRSTgaclCredCreate("dn:", "/O=Grid/CN=Mr Grid Person"); + cred = GRSTgaclCredCreate("dn:", "/O=Grid/CN=Mr%20Grid%20Person"); /* create an entry to put it in */ diff --git a/org.gridsite.core/src/grst_gacl.c b/org.gridsite.core/src/grst_gacl.c index b58ca34..f46d0c5 100644 --- a/org.gridsite.core/src/grst_gacl.c +++ b/org.gridsite.core/src/grst_gacl.c @@ -163,7 +163,7 @@ int GRSTgaclCredAddValue(GRSTgaclCred *cred, char *name, char *rawvalue) */ { int i; - char *value; + char *value, *encoded_value; if ((cred == NULL) || (cred->auri == NULL)) return 0; free(cred->auri); @@ -177,38 +177,46 @@ int GRSTgaclCredAddValue(GRSTgaclCred *cred, char *name, char *rawvalue) value = strdup(value); for (i=strlen(value) - 1; (i >= 0) && isspace(value[i]); --i) value[i]='\0'; + encoded_value = GRSThttpUrlMildencode(value); + if (strcmp(name, "dn") == 0) { - asprintf(&(cred->auri), "dn:%s", value); + asprintf(&(cred->auri), "dn:%s", encoded_value); free(value); + free(encoded_value); return 1; } else if (strcmp(name, "fqan") == 0) { - asprintf(&(cred->auri), "fqan:%s", value); + asprintf(&(cred->auri), "fqan:%s", encoded_value); free(value); + free(encoded_value); return 1; } else if (strcmp(name, "url") == 0) { - asprintf(&(cred->auri), "%s", value); + asprintf(&(cred->auri), "%s", encoded_value); free(value); + free(encoded_value); return 1; } else if (strcmp(name, "hostname") == 0) { - asprintf(&(cred->auri), "dns:%s", value); + asprintf(&(cred->auri), "dns:%s", encoded_value); free(value); + free(encoded_value); return 1; } else if (strcmp(name, "nist-loa") == 0) { - asprintf(&(cred->auri), "nist-loa:%s", value); + asprintf(&(cred->auri), "nist-loa:%s", encoded_value); free(value); + free(encoded_value); return 1; } free(value); + free(encoded_value); return 0; } @@ -673,7 +681,7 @@ static GRSTgaclCred *GRSTgaclCredParse(xmlNodePtr cur) { if (!xmlIsBlankNode(cur2)) GRSTgaclCredAddValue(cred, (char *) cur2->name, - (char *) xmlNodeGetContent(cur2)); + (char *) xmlNodeGetContent(cur2)); } return cred; -- 1.8.2.3