Allocate data returned by pkcs7_t.get_attribute()

This commit is contained in:
Martin Willi
2012-12-19 10:32:08 +01:00
parent c61723c69f
commit 063ae4e52a
4 changed files with 9 additions and 2 deletions
@@ -41,9 +41,12 @@ struct pkcs7_t {
* To select the signerInfo structure to get the attribute from, pass * To select the signerInfo structure to get the attribute from, pass
* the enumerator position from container_t.create_signature_enumerator(). * the enumerator position from container_t.create_signature_enumerator().
* *
* The attribute returned does not contain type information and must be
* freed after use.
*
* @param oid OID from the attribute to get * @param oid OID from the attribute to get
* @param enumerator enumerator to select signerInfo * @param enumerator enumerator to select signerInfo
* @param value chunk receiving attribute value, internal data * @param value chunk receiving attribute value, allocated
* @return TRUE if attribute found * @return TRUE if attribute found
*/ */
bool (*get_attribute)(pkcs7_t *this, int oid, enumerator_t *enumerator, bool (*get_attribute)(pkcs7_t *this, int oid, enumerator_t *enumerator,
@@ -323,7 +323,7 @@ METHOD(pkcs7_t, get_attribute, bool,
chunk = e->info->attributes->get_attribute(e->info->attributes, oid); chunk = e->info->attributes->get_attribute(e->info->attributes, oid);
if (chunk.len) if (chunk.len)
{ {
*value = chunk; *value = chunk_clone(chunk);
return TRUE; return TRUE;
} }
} }
+1
View File
@@ -114,6 +114,7 @@ static int verify(chunk_t chunk)
{ {
fprintf(stderr, " at %T", &t, FALSE); fprintf(stderr, " at %T", &t, FALSE);
} }
free(data.ptr);
} }
fprintf(stderr, "\n"); fprintf(stderr, "\n");
} }
+3
View File
@@ -85,6 +85,7 @@ void extract_attributes(pkcs7_t *pkcs7, enumerator_t *enumerator,
} }
} }
DBG2(DBG_APP, "messageType: %s", msgType_names[attrs->msgType]); DBG2(DBG_APP, "messageType: %s", msgType_names[attrs->msgType]);
free(attr.ptr);
} }
if (pkcs7->get_attribute(pkcs7, OID_PKI_STATUS, enumerator, &attr)) if (pkcs7->get_attribute(pkcs7, OID_PKI_STATUS, enumerator, &attr))
{ {
@@ -98,6 +99,7 @@ void extract_attributes(pkcs7_t *pkcs7, enumerator_t *enumerator,
} }
} }
DBG2(DBG_APP, "pkiStatus: %s", pkiStatus_names[attrs->pkiStatus]); DBG2(DBG_APP, "pkiStatus: %s", pkiStatus_names[attrs->pkiStatus]);
free(attr.ptr);
} }
if (pkcs7->get_attribute(pkcs7, OID_PKI_FAIL_INFO, enumerator, &attr)) if (pkcs7->get_attribute(pkcs7, OID_PKI_FAIL_INFO, enumerator, &attr))
{ {
@@ -109,6 +111,7 @@ void extract_attributes(pkcs7_t *pkcs7, enumerator_t *enumerator,
{ {
DBG1(DBG_APP, "failInfo: %s", failInfo_reasons[attrs->failInfo]); DBG1(DBG_APP, "failInfo: %s", failInfo_reasons[attrs->failInfo]);
} }
free(attr.ptr);
} }
pkcs7->get_attribute(pkcs7, OID_PKI_SENDER_NONCE, enumerator, pkcs7->get_attribute(pkcs7, OID_PKI_SENDER_NONCE, enumerator,