summaryrefslogtreecommitdiffstats
path: root/pki
diff options
context:
space:
mode:
authorawnuk <awnuk@c9f7a03b-bd48-0410-a16d-cbbf54688b0b>2011-09-23 19:03:01 +0000
committerawnuk <awnuk@c9f7a03b-bd48-0410-a16d-cbbf54688b0b>2011-09-23 19:03:01 +0000
commit0335f3c92f3c392f7b2602c7cb2c423f37e76af3 (patch)
treef83b875c7d54b771940987c75a1655d6ee00ba11 /pki
parent1e27f67a6ba409f8a76e4c49473ef0db8bdc5bb6 (diff)
downloadpki-0335f3c92f3c392f7b2602c7cb2c423f37e76af3.tar.gz
pki-0335f3c92f3c392f7b2602c7cb2c423f37e76af3.tar.xz
pki-0335f3c92f3c392f7b2602c7cb2c423f37e76af3.zip
Fixed bugzilla bug #735191.
git-svn-id: svn+ssh://svn.fedorahosted.org/svn/pki/trunk@2226 c9f7a03b-bd48-0410-a16d-cbbf54688b0b
Diffstat (limited to 'pki')
-rw-r--r--pki/base/tps/src/engine/RA.cpp2
-rw-r--r--pki/base/tps/src/include/tus/tus_db.h2
-rw-r--r--pki/base/tps/src/tus/tus_db.c30
3 files changed, 30 insertions, 4 deletions
diff --git a/pki/base/tps/src/engine/RA.cpp b/pki/base/tps/src/engine/RA.cpp
index 19c445f9d..7b8e7adcc 100644
--- a/pki/base/tps/src/engine/RA.cpp
+++ b/pki/base/tps/src/engine/RA.cpp
@@ -3151,7 +3151,7 @@ int RA::tdb_update(const char *userid, char* cuid, char* applet_version, char *k
/* need code to modify things such as applet version ...*/
/* ldap modify code to follow...*/
rc = update_tus_db_entry ("~tps", cuid, userid, key_info, state,
- applet_version, reason);
+ applet_version, reason, token_type);
}
loser:
if (ldapResult != NULL) {
diff --git a/pki/base/tps/src/include/tus/tus_db.h b/pki/base/tps/src/include/tus/tus_db.h
index 078b556b0..b1c7ebe86 100644
--- a/pki/base/tps/src/include/tus/tus_db.h
+++ b/pki/base/tps/src/include/tus/tus_db.h
@@ -178,7 +178,7 @@ TPS_PUBLIC char *get_token_reason(LDAPMessage *e);
TPS_PUBLIC int update_tus_db_entry (const char *agentid,
char *cn, const char *uid, char *keyInfo,
const char *status,
- char *applet_version, const char *reason);
+ char *applet_version, const char *reason, const char* token_type);
TPS_PUBLIC int update_tus_db_entry_with_mods (const char *agentid, const char *cn, LDAPMod **mods);
TPS_PUBLIC int check_and_modify_tus_db_entry (char *userid, char *cn, char *check, LDAPMod **mods);
TPS_PUBLIC int modify_tus_db_entry (char *userid, char *cn, LDAPMod **mods);
diff --git a/pki/base/tps/src/tus/tus_db.c b/pki/base/tps/src/tus/tus_db.c
index 30c59327e..377aaa8a2 100644
--- a/pki/base/tps/src/tus/tus_db.c
+++ b/pki/base/tps/src/tus/tus_db.c
@@ -1385,10 +1385,12 @@ TPS_PUBLIC int update_tus_db_entry (const char *agentid, char *cn, const char *u
if (PR_snprintf(dn, 255, "cn=%s,%s", cn, baseDN) < 0)
return -1;
- if (keyInfo == NULL)
+ if (keyInfo == NULL && token_type == NULL)
mods = allocate_modifications(5);
- else
+ else if (keyInfo == NULL || token_type == NULL)
mods = allocate_modifications(6);
+ else
+ mods = allocate_modifications(7);
if (mods == NULL)
return -1;
@@ -1502,6 +1504,30 @@ TPS_PUBLIC int update_tus_db_entry (const char *agentid, char *cn, const char *u
mods[k]->mod_values = v;
k++;
}
+
+ /* for token_type */
+ if (token_type != NULL) {
+ if (token_type != NULL && PL_strlen(token_type) > 0)
+ len = PL_strlen(token_type);
+ else
+ len = 0;
+ if ((v = allocate_values(1, len+1)) == NULL) {
+ if( mods != NULL ) {
+ free_modifications( mods, 0 );
+ mods = NULL;
+ }
+ return -1;
+ }
+ mods[k]->mod_op = LDAP_MOD_REPLACE;
+ mods[k]->mod_type = TOKEN_TYPE;
+ if (len > 0)
+ PL_strcpy(v[0], token_type);
+ else
+ v[0] = "";
+ mods[k]->mod_values = v;
+ k++;
+ }
+
for (tries = 0; tries < MAX_RETRIES; tries++) {
if ((rc = ldap_modify_ext_s(ld, dn, mods, NULL, NULL)) == LDAP_SUCCESS) {
break;