summaryrefslogtreecommitdiffstats
path: root/src/network/ssl/qsslcertificate.cpp
diff options
context:
space:
mode:
authorRichard Moore <rich@kde.org>2011-07-11 16:15:12 +0200
committerQt by Nokia <qt-info@nokia.com>2011-07-11 17:32:47 +0200
commit8499fb3a9a069b35ff352f1f6253bc0ebd03ba96 (patch)
tree1df2a45e81305fda2acf591f5341cb0424703980 /src/network/ssl/qsslcertificate.cpp
parentc299b4deac512f3d80c840e5eef2f18b2bc0b43c (diff)
SSL: Store x509 name entries that have no short name as their OID.
Previously, x509 name entries that didn't have a shortname would all be (accidentally) stored with the tag 'UNDEF'. This commit changes things so that they are stored using the string form of their OID. Change-Id: I667306cc4f91b1ca84f29b986bc21daadeb089b6 Merge-request: 18 Reviewed-by: Peter Hartmann <peter.hartmann@nokia.com> Reviewed-on: http://codereview.qt.nokia.com/1449 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Diffstat (limited to 'src/network/ssl/qsslcertificate.cpp')
-rw-r--r--src/network/ssl/qsslcertificate.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/network/ssl/qsslcertificate.cpp b/src/network/ssl/qsslcertificate.cpp
index 7403590f8c..4f7c86ef4f 100644
--- a/src/network/ssl/qsslcertificate.cpp
+++ b/src/network/ssl/qsslcertificate.cpp
@@ -711,12 +711,24 @@ static QMap<QString, QString> _q_mapFromX509Name(X509_NAME *name)
QMap<QString, QString> info;
for (int i = 0; i < q_X509_NAME_entry_count(name); ++i) {
X509_NAME_ENTRY *e = q_X509_NAME_get_entry(name, i);
- const char *obj = q_OBJ_nid2sn(q_OBJ_obj2nid(q_X509_NAME_ENTRY_get_object(e)));
+
+ int nid = q_OBJ_obj2nid(q_X509_NAME_ENTRY_get_object(e));
+ const char *obj=0;
+ char buf[80];
+ if (nid != NID_undef) {
+ obj = q_OBJ_nid2sn(nid);
+ }
+ else {
+ // This is used for unknown info so we get the OID as text
+ q_i2t_ASN1_OBJECT(buf,sizeof(buf),e->object);
+ }
unsigned char *data = 0;
int size = q_ASN1_STRING_to_UTF8(&data, q_X509_NAME_ENTRY_get_data(e));
- info.insertMulti(QString::fromUtf8(obj), QString::fromUtf8((char*)data, size));
+ info.insertMulti(QString::fromUtf8(obj ? obj : reinterpret_cast<const char *>(&buf)),
+ QString::fromUtf8((char*)data, size));
q_CRYPTO_free(data);
}
+
return info;
}