Date: Friday, January 9, 2015 @ 09:13:26 Author: andrea Revision: 228843
archrelease: copy trunk to testing-i686, testing-x86_64 Added: plasma-nm/repos/testing-i686/PKGBUILD (from rev 228842, plasma-nm/trunk/PKGBUILD) plasma-nm/repos/testing-x86_64/PKGBUILD (from rev 228842, plasma-nm/trunk/PKGBUILD) Deleted: plasma-nm/repos/testing-i686/PKGBUILD plasma-nm/repos/testing-i686/openconnect7.patch plasma-nm/repos/testing-x86_64/PKGBUILD plasma-nm/repos/testing-x86_64/openconnect7.patch -----------------------------------+ /PKGBUILD | 74 ++++++++++++ testing-i686/PKGBUILD | 41 ------ testing-i686/openconnect7.patch | 222 ------------------------------------ testing-x86_64/PKGBUILD | 41 ------ testing-x86_64/openconnect7.patch | 222 ------------------------------------ 5 files changed, 74 insertions(+), 526 deletions(-) Deleted: testing-i686/PKGBUILD =================================================================== --- testing-i686/PKGBUILD 2015-01-09 08:12:37 UTC (rev 228842) +++ testing-i686/PKGBUILD 2015-01-09 08:13:26 UTC (rev 228843) @@ -1,41 +0,0 @@ -# $Id$ -# Maintainer: Andrea Scarpino <and...@archlinux.org> - -pkgname=plasma-nm -pkgver=5.1.2 -pkgrel=2 -pkgdesc='Plasma applet written in QML for managing network connections' -arch=('i686' 'x86_64') -url='https://projects.kde.org/projects/kde/workspace/plasma-nm' -license=('GPL2') -depends=('plasma-workspace' 'libmm-qt5' 'libnm-qt5') -makedepends=('extra-cmake-modules' 'kdoctools' 'openconnect' 'mobile-broadband-provider-info') -optdepends=('mobile-broadband-provider-info: Database of mobile broadband service providers' 'openconnect: Cisco AnyConnect VPN plugin') -groups=('plasma-next') -source=("http://download.kde.org/stable/plasma/${pkgver}/$pkgname-$pkgver.tar.xz" - 'openconnect7.patch') -md5sums=('85bcbb4dc40ff020a566413a209858ca' - '1ce726ebf54031eb09763a45099962ed') - -prepare() { - mkdir -p build - - cd ${pkgname}-${pkgver} - patch -p1 -i "${srcdir}"/openconnect7.patch -} - -build() { - cd build - cmake ../$pkgname-$pkgver \ - -DCMAKE_INSTALL_PREFIX=/usr \ - -DCMAKE_BUILD_TYPE=Release \ - -DLIB_INSTALL_DIR=lib \ - -DKDE_INSTALL_USE_QT_SYS_PATHS=ON \ - -DBUILD_TESTING=OFF - make -} - -package() { - cd build - make DESTDIR="${pkgdir}" install -} Copied: plasma-nm/repos/testing-i686/PKGBUILD (from rev 228842, plasma-nm/trunk/PKGBUILD) =================================================================== --- testing-i686/PKGBUILD (rev 0) +++ testing-i686/PKGBUILD 2015-01-09 08:13:26 UTC (rev 228843) @@ -0,0 +1,37 @@ +# $Id$ +# Maintainer: Andrea Scarpino <and...@archlinux.org> + +pkgname=plasma-nm +pkgver=5.1.2.1 +pkgrel=2 +pkgdesc='Plasma applet written in QML for managing network connections' +arch=('i686' 'x86_64') +url='https://projects.kde.org/projects/kde/workspace/plasma-nm' +license=('GPL2') +depends=('plasma-framework' 'libmm-qt5' 'networkmanager-qt' 'kdelibs4support') +makedepends=('extra-cmake-modules' 'kdoctools' 'openconnect' 'mobile-broadband-provider-info') +optdepends=('mobile-broadband-provider-info: Database of mobile broadband service providers' + 'openconnect: Cisco AnyConnect VPN plugin') +groups=('plasma-next') +source=("http://download.kde.org/stable/plasma/${pkgver}/$pkgname-$pkgver.tar.xz") +md5sums=('3fcad6c0ce0bacb2fa4e3e2a9f4c2cd2') + +prepare() { + mkdir -p build +} + +build() { + cd build + cmake ../$pkgname-$pkgver \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_BUILD_TYPE=Release \ + -DLIB_INSTALL_DIR=lib \ + -DKDE_INSTALL_USE_QT_SYS_PATHS=ON \ + -DBUILD_TESTING=OFF + make +} + +package() { + cd build + make DESTDIR="${pkgdir}" install +} Deleted: testing-i686/openconnect7.patch =================================================================== --- testing-i686/openconnect7.patch 2015-01-09 08:12:37 UTC (rev 228842) +++ testing-i686/openconnect7.patch 2015-01-09 08:13:26 UTC (rev 228843) @@ -1,222 +0,0 @@ -From: David Woodhouse <david.woodho...@intel.com> -Date: Wed, 03 Dec 2014 14:10:44 +0000 -Subject: Update OpenConnect support for library version 5 -X-Git-Url: http://quickgit.kde.org/?p=plasma-nm.git&a=commitdiff&h=66d9ab613c1ffd3f36df818f28cffe7750a36f6b ---- -Update OpenConnect support for library version 5 - -String ownership rules are now very simple: the library never takes ownership -of a string it's passed. It always takes its *own* copy and is responsible -for freeing that. Mostly driven by Windows DLL Hell where it's painful to -allocate in one library and free in another because they might actually be -using different heaps. - -Also adapt to the changes in server certificate hash handling. We are no -longer supposed to just compare strings, and must call the relevant function -to check a hash against the server's certificate. This gives better matching -and allows libopenconnect to upgrade the hash in future when it becomes -necessary. ---- - - ---- a/vpn/openconnect/CMakeLists.txt -+++ b/vpn/openconnect/CMakeLists.txt -@@ -25,6 +25,8 @@ - - if (${OPENCONNECT_VERSION} VERSION_GREATER ${MINIMUM_OPENCONNECT_VERSION_REQUIRED} OR - ${OPENCONNECT_VERSION} VERSION_EQUAL ${MINIMUM_OPENCONNECT_VERSION_REQUIRED}) -+ -+ include_directories(${OPENCONNECT_INCLUDE_DIRS}) - - set(openconnect_SRCS - openconnectui.cpp - ---- a/vpn/openconnect/openconnectauth.cpp -+++ b/vpn/openconnect/openconnectauth.cpp -@@ -165,7 +165,7 @@ - } - if (!dataMap[NM_OPENCONNECT_KEY_CACERT].isEmpty()) { - const QByteArray crt = QFile::encodeName(dataMap[NM_OPENCONNECT_KEY_CACERT]); -- openconnect_set_cafile(d->vpninfo, strdup(crt.data())); -+ openconnect_set_cafile(d->vpninfo, OC3DUP(crt.data())); - } - if (dataMap[NM_OPENCONNECT_KEY_CSD_ENABLE] == "yes") { - char *wrapper; -@@ -178,12 +178,12 @@ - } - if (!dataMap[NM_OPENCONNECT_KEY_PROXY].isEmpty()) { - const QByteArray proxy = QFile::encodeName(dataMap[NM_OPENCONNECT_KEY_PROXY]); -- openconnect_set_http_proxy(d->vpninfo, strdup(proxy.data())); -+ openconnect_set_http_proxy(d->vpninfo, OC3DUP(proxy.data())); - } - if (!dataMap[NM_OPENCONNECT_KEY_USERCERT].isEmpty()) { - const QByteArray crt = QFile::encodeName(dataMap[NM_OPENCONNECT_KEY_USERCERT]); - const QByteArray key = QFile::encodeName(dataMap[NM_OPENCONNECT_KEY_PRIVKEY]); -- openconnect_set_client_cert (d->vpninfo, strdup(crt.data()), strdup(key.data())); -+ openconnect_set_client_cert (d->vpninfo, OC3DUP(crt.data()), OC3DUP(key.data())); - - if (!crt.isEmpty() && dataMap[NM_OPENCONNECT_KEY_PEM_PASSPHRASE_FSID] == "yes") { - openconnect_passphrase_from_fsid(d->vpninfo); -@@ -280,10 +280,10 @@ - const VPNHost &host = d->hosts.at(i); - if (openconnect_parse_url(d->vpninfo, host.address.toAscii().data())) { - qWarning() << "Failed to parse server URL" << host.address; -- openconnect_set_hostname(d->vpninfo, strdup(host.address.toAscii().data())); -+ openconnect_set_hostname(d->vpninfo, OC3DUP(host.address.toAscii().data())); - } - if (!openconnect_get_urlpath(d->vpninfo) && !host.group.isEmpty()) -- openconnect_set_urlpath(d->vpninfo, strdup(host.group.toAscii().data())); -+ openconnect_set_urlpath(d->vpninfo, OC3DUP(host.group.toAscii().data())); - d->secrets["lasthost"] = host.name; - addFormInfo(QLatin1String("dialog-information"), i18n("Contacting host, please wait...")); - d->worker->start(); -@@ -305,9 +305,13 @@ - secrets.insert(QLatin1String(NM_OPENCONNECT_KEY_COOKIE), QLatin1String(openconnect_get_cookie(d->vpninfo))); - openconnect_clear_cookie(d->vpninfo); - -+#if OPENCONNECT_CHECK_VER(5,0) -+ const char *fingerprint = openconnect_get_peer_cert_hash(d->vpninfo); -+#else - OPENCONNECT_X509 *cert = openconnect_get_peer_cert(d->vpninfo); - char fingerprint[41]; - openconnect_get_cert_sha1(d->vpninfo, cert, fingerprint); -+#endif - secrets.insert(QLatin1String(NM_OPENCONNECT_KEY_GWCERT), QLatin1String(fingerprint)); - secrets.insert(QLatin1String("certsigs"), d->certificateFingerprints.join("\t")); - secrets.insert(QLatin1String("autoconnect"), d->ui.chkAutoconnect->isChecked() ? "yes" : "no"); -@@ -581,14 +585,16 @@ - const QString key = QString("form:%1:%2").arg(QLatin1String(form->auth_id)).arg(QLatin1String(opt->name)); - if (opt->type == OC_FORM_OPT_PASSWORD || opt->type == OC_FORM_OPT_TEXT) { - QLineEdit *le = qobject_cast<QLineEdit*>(widget); -- opt->value = qstrdup(le->text().toUtf8().constData()); -- if (opt->type == OC_FORM_OPT_PASSWORD) { -+ QByteArray text = le->text().toUtf8(); -+ openconnect_set_option_value(opt, text.data()); -+ if (opt->type == OC_FORM_OPT_TEXT) { - d->secrets.insert(key,le->text()); - } - } else if (opt->type == OC_FORM_OPT_SELECT) { - QComboBox *cbo = qobject_cast<QComboBox*>(widget); -- opt->value = qstrdup(cbo->currentData().toString().toUtf8().constData()); -- d->secrets.insert(key, cbo->currentData().toString()); -+ QByteArray text = cbo->itemData(cbo->currentIndex()).toString().toAscii(); -+ openconnect_set_option_value(opt, text.data()); -+ d->secrets.insert(key,cbo->itemData(cbo->currentIndex()).toString()); - } - } - } - ---- a/vpn/openconnect/openconnectauthworkerthread.cpp -+++ b/vpn/openconnect/openconnectauthworkerthread.cpp -@@ -43,6 +43,20 @@ - class OpenconnectAuthStaticWrapper - { - public: -+#if OPENCONNECT_CHECK_VER(5,0) -+ static int writeNewConfig(void *obj, const char *str, int num) -+ { -+ if (obj) -+ return static_cast<OpenconnectAuthWorkerThread*>(obj)->writeNewConfig(str, num); -+ return -1; -+ } -+ static int validatePeerCert(void *obj, const char *str) -+ { -+ if (obj) -+ return static_cast<OpenconnectAuthWorkerThread*>(obj)->validatePeerCert(NULL, str); -+ return -1; -+ } -+#else - static int writeNewConfig(void *obj, char *str, int num) - { - if (obj) -@@ -55,7 +69,8 @@ - return static_cast<OpenconnectAuthWorkerThread*>(obj)->validatePeerCert(cert, str); - return -1; - } -- static int processAuthForm(void *obj, struct oc_auth_form *form) -+#endif -+ static int processAuthForm(void *obj, struct oc_auth_form *form) - { - if (obj) - return static_cast<OpenconnectAuthWorkerThread*>(obj)->processAuthFormP(form); -@@ -108,7 +123,7 @@ - return m_openconnectInfo; - } - --int OpenconnectAuthWorkerThread::writeNewConfig(char *buf, int buflen) -+int OpenconnectAuthWorkerThread::writeNewConfig(const char *buf, int buflen) - { - Q_UNUSED(buflen) - if (*m_userDecidedToQuit) -@@ -139,10 +154,16 @@ - } - #endif - --int OpenconnectAuthWorkerThread::validatePeerCert(OPENCONNECT_X509 *cert, const char *reason) --{ -- if (*m_userDecidedToQuit) -- return -EINVAL; -+int OpenconnectAuthWorkerThread::validatePeerCert(void *cert, const char *reason) -+{ -+ if (*m_userDecidedToQuit) -+ return -EINVAL; -+ -+#if OPENCONNECT_CHECK_VER(5,0) -+ (void)cert; -+ const char *fingerprint = openconnect_get_peer_cert_hash(m_openconnectInfo); -+ char *details = openconnect_get_peer_cert_details(m_openconnectInfo); -+#else - char fingerprint[41]; - int ret = 0; - -@@ -151,7 +172,7 @@ - return ret; - - char *details = openconnect_get_cert_details(m_openconnectInfo, cert); -- -+#endif - bool accepted = false; - m_mutex->lock(); - QString qFingerprint(fingerprint); -@@ -160,7 +181,7 @@ - emit validatePeerCert(qFingerprint, qCertinfo, qReason, &accepted); - m_waitForUserInput->wait(m_mutex); - m_mutex->unlock(); -- ::free(details); -+ openconnect_free_cert_info(m_openconnectInfo, details); - if (*m_userDecidedToQuit) - return -EINVAL; - - ---- a/vpn/openconnect/openconnectauthworkerthread.h -+++ b/vpn/openconnect/openconnectauthworkerthread.h -@@ -59,6 +59,17 @@ - #define OC_FORM_RESULT_NEWGROUP 2 - #endif - -+#if OPENCONNECT_CHECK_VER(4,0) -+#define OC3DUP(x) (x) -+#else -+#define openconnect_set_option_value(opt, val) do { \ -+ struct oc_form_opt *_o = (opt); \ -+ free(_o->value); _o->value = strdup(val); \ -+ } while (0) -+#define openconnect_free_cert_info(v, x) ::free(x) -+#define OC3DUP(x) strdup(x) -+#endif -+ - #include <QThread> - - class QMutex; -@@ -85,8 +96,8 @@ - void run(); - - private: -- int writeNewConfig(char *, int); -- int validatePeerCert(OPENCONNECT_X509 *, const char *); -+ int writeNewConfig(const char *, int); -+ int validatePeerCert(void *, const char *); - int processAuthFormP(struct oc_auth_form *); - void writeProgress(int level, const char *, va_list); - - Deleted: testing-x86_64/PKGBUILD =================================================================== --- testing-x86_64/PKGBUILD 2015-01-09 08:12:37 UTC (rev 228842) +++ testing-x86_64/PKGBUILD 2015-01-09 08:13:26 UTC (rev 228843) @@ -1,41 +0,0 @@ -# $Id$ -# Maintainer: Andrea Scarpino <and...@archlinux.org> - -pkgname=plasma-nm -pkgver=5.1.2 -pkgrel=2 -pkgdesc='Plasma applet written in QML for managing network connections' -arch=('i686' 'x86_64') -url='https://projects.kde.org/projects/kde/workspace/plasma-nm' -license=('GPL2') -depends=('plasma-workspace' 'libmm-qt5' 'libnm-qt5') -makedepends=('extra-cmake-modules' 'kdoctools' 'openconnect' 'mobile-broadband-provider-info') -optdepends=('mobile-broadband-provider-info: Database of mobile broadband service providers' 'openconnect: Cisco AnyConnect VPN plugin') -groups=('plasma-next') -source=("http://download.kde.org/stable/plasma/${pkgver}/$pkgname-$pkgver.tar.xz" - 'openconnect7.patch') -md5sums=('85bcbb4dc40ff020a566413a209858ca' - '1ce726ebf54031eb09763a45099962ed') - -prepare() { - mkdir -p build - - cd ${pkgname}-${pkgver} - patch -p1 -i "${srcdir}"/openconnect7.patch -} - -build() { - cd build - cmake ../$pkgname-$pkgver \ - -DCMAKE_INSTALL_PREFIX=/usr \ - -DCMAKE_BUILD_TYPE=Release \ - -DLIB_INSTALL_DIR=lib \ - -DKDE_INSTALL_USE_QT_SYS_PATHS=ON \ - -DBUILD_TESTING=OFF - make -} - -package() { - cd build - make DESTDIR="${pkgdir}" install -} Copied: plasma-nm/repos/testing-x86_64/PKGBUILD (from rev 228842, plasma-nm/trunk/PKGBUILD) =================================================================== --- testing-x86_64/PKGBUILD (rev 0) +++ testing-x86_64/PKGBUILD 2015-01-09 08:13:26 UTC (rev 228843) @@ -0,0 +1,37 @@ +# $Id$ +# Maintainer: Andrea Scarpino <and...@archlinux.org> + +pkgname=plasma-nm +pkgver=5.1.2.1 +pkgrel=2 +pkgdesc='Plasma applet written in QML for managing network connections' +arch=('i686' 'x86_64') +url='https://projects.kde.org/projects/kde/workspace/plasma-nm' +license=('GPL2') +depends=('plasma-framework' 'libmm-qt5' 'networkmanager-qt' 'kdelibs4support') +makedepends=('extra-cmake-modules' 'kdoctools' 'openconnect' 'mobile-broadband-provider-info') +optdepends=('mobile-broadband-provider-info: Database of mobile broadband service providers' + 'openconnect: Cisco AnyConnect VPN plugin') +groups=('plasma-next') +source=("http://download.kde.org/stable/plasma/${pkgver}/$pkgname-$pkgver.tar.xz") +md5sums=('3fcad6c0ce0bacb2fa4e3e2a9f4c2cd2') + +prepare() { + mkdir -p build +} + +build() { + cd build + cmake ../$pkgname-$pkgver \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_BUILD_TYPE=Release \ + -DLIB_INSTALL_DIR=lib \ + -DKDE_INSTALL_USE_QT_SYS_PATHS=ON \ + -DBUILD_TESTING=OFF + make +} + +package() { + cd build + make DESTDIR="${pkgdir}" install +} Deleted: testing-x86_64/openconnect7.patch =================================================================== --- testing-x86_64/openconnect7.patch 2015-01-09 08:12:37 UTC (rev 228842) +++ testing-x86_64/openconnect7.patch 2015-01-09 08:13:26 UTC (rev 228843) @@ -1,222 +0,0 @@ -From: David Woodhouse <david.woodho...@intel.com> -Date: Wed, 03 Dec 2014 14:10:44 +0000 -Subject: Update OpenConnect support for library version 5 -X-Git-Url: http://quickgit.kde.org/?p=plasma-nm.git&a=commitdiff&h=66d9ab613c1ffd3f36df818f28cffe7750a36f6b ---- -Update OpenConnect support for library version 5 - -String ownership rules are now very simple: the library never takes ownership -of a string it's passed. It always takes its *own* copy and is responsible -for freeing that. Mostly driven by Windows DLL Hell where it's painful to -allocate in one library and free in another because they might actually be -using different heaps. - -Also adapt to the changes in server certificate hash handling. We are no -longer supposed to just compare strings, and must call the relevant function -to check a hash against the server's certificate. This gives better matching -and allows libopenconnect to upgrade the hash in future when it becomes -necessary. ---- - - ---- a/vpn/openconnect/CMakeLists.txt -+++ b/vpn/openconnect/CMakeLists.txt -@@ -25,6 +25,8 @@ - - if (${OPENCONNECT_VERSION} VERSION_GREATER ${MINIMUM_OPENCONNECT_VERSION_REQUIRED} OR - ${OPENCONNECT_VERSION} VERSION_EQUAL ${MINIMUM_OPENCONNECT_VERSION_REQUIRED}) -+ -+ include_directories(${OPENCONNECT_INCLUDE_DIRS}) - - set(openconnect_SRCS - openconnectui.cpp - ---- a/vpn/openconnect/openconnectauth.cpp -+++ b/vpn/openconnect/openconnectauth.cpp -@@ -165,7 +165,7 @@ - } - if (!dataMap[NM_OPENCONNECT_KEY_CACERT].isEmpty()) { - const QByteArray crt = QFile::encodeName(dataMap[NM_OPENCONNECT_KEY_CACERT]); -- openconnect_set_cafile(d->vpninfo, strdup(crt.data())); -+ openconnect_set_cafile(d->vpninfo, OC3DUP(crt.data())); - } - if (dataMap[NM_OPENCONNECT_KEY_CSD_ENABLE] == "yes") { - char *wrapper; -@@ -178,12 +178,12 @@ - } - if (!dataMap[NM_OPENCONNECT_KEY_PROXY].isEmpty()) { - const QByteArray proxy = QFile::encodeName(dataMap[NM_OPENCONNECT_KEY_PROXY]); -- openconnect_set_http_proxy(d->vpninfo, strdup(proxy.data())); -+ openconnect_set_http_proxy(d->vpninfo, OC3DUP(proxy.data())); - } - if (!dataMap[NM_OPENCONNECT_KEY_USERCERT].isEmpty()) { - const QByteArray crt = QFile::encodeName(dataMap[NM_OPENCONNECT_KEY_USERCERT]); - const QByteArray key = QFile::encodeName(dataMap[NM_OPENCONNECT_KEY_PRIVKEY]); -- openconnect_set_client_cert (d->vpninfo, strdup(crt.data()), strdup(key.data())); -+ openconnect_set_client_cert (d->vpninfo, OC3DUP(crt.data()), OC3DUP(key.data())); - - if (!crt.isEmpty() && dataMap[NM_OPENCONNECT_KEY_PEM_PASSPHRASE_FSID] == "yes") { - openconnect_passphrase_from_fsid(d->vpninfo); -@@ -280,10 +280,10 @@ - const VPNHost &host = d->hosts.at(i); - if (openconnect_parse_url(d->vpninfo, host.address.toAscii().data())) { - qWarning() << "Failed to parse server URL" << host.address; -- openconnect_set_hostname(d->vpninfo, strdup(host.address.toAscii().data())); -+ openconnect_set_hostname(d->vpninfo, OC3DUP(host.address.toAscii().data())); - } - if (!openconnect_get_urlpath(d->vpninfo) && !host.group.isEmpty()) -- openconnect_set_urlpath(d->vpninfo, strdup(host.group.toAscii().data())); -+ openconnect_set_urlpath(d->vpninfo, OC3DUP(host.group.toAscii().data())); - d->secrets["lasthost"] = host.name; - addFormInfo(QLatin1String("dialog-information"), i18n("Contacting host, please wait...")); - d->worker->start(); -@@ -305,9 +305,13 @@ - secrets.insert(QLatin1String(NM_OPENCONNECT_KEY_COOKIE), QLatin1String(openconnect_get_cookie(d->vpninfo))); - openconnect_clear_cookie(d->vpninfo); - -+#if OPENCONNECT_CHECK_VER(5,0) -+ const char *fingerprint = openconnect_get_peer_cert_hash(d->vpninfo); -+#else - OPENCONNECT_X509 *cert = openconnect_get_peer_cert(d->vpninfo); - char fingerprint[41]; - openconnect_get_cert_sha1(d->vpninfo, cert, fingerprint); -+#endif - secrets.insert(QLatin1String(NM_OPENCONNECT_KEY_GWCERT), QLatin1String(fingerprint)); - secrets.insert(QLatin1String("certsigs"), d->certificateFingerprints.join("\t")); - secrets.insert(QLatin1String("autoconnect"), d->ui.chkAutoconnect->isChecked() ? "yes" : "no"); -@@ -581,14 +585,16 @@ - const QString key = QString("form:%1:%2").arg(QLatin1String(form->auth_id)).arg(QLatin1String(opt->name)); - if (opt->type == OC_FORM_OPT_PASSWORD || opt->type == OC_FORM_OPT_TEXT) { - QLineEdit *le = qobject_cast<QLineEdit*>(widget); -- opt->value = qstrdup(le->text().toUtf8().constData()); -- if (opt->type == OC_FORM_OPT_PASSWORD) { -+ QByteArray text = le->text().toUtf8(); -+ openconnect_set_option_value(opt, text.data()); -+ if (opt->type == OC_FORM_OPT_TEXT) { - d->secrets.insert(key,le->text()); - } - } else if (opt->type == OC_FORM_OPT_SELECT) { - QComboBox *cbo = qobject_cast<QComboBox*>(widget); -- opt->value = qstrdup(cbo->currentData().toString().toUtf8().constData()); -- d->secrets.insert(key, cbo->currentData().toString()); -+ QByteArray text = cbo->itemData(cbo->currentIndex()).toString().toAscii(); -+ openconnect_set_option_value(opt, text.data()); -+ d->secrets.insert(key,cbo->itemData(cbo->currentIndex()).toString()); - } - } - } - ---- a/vpn/openconnect/openconnectauthworkerthread.cpp -+++ b/vpn/openconnect/openconnectauthworkerthread.cpp -@@ -43,6 +43,20 @@ - class OpenconnectAuthStaticWrapper - { - public: -+#if OPENCONNECT_CHECK_VER(5,0) -+ static int writeNewConfig(void *obj, const char *str, int num) -+ { -+ if (obj) -+ return static_cast<OpenconnectAuthWorkerThread*>(obj)->writeNewConfig(str, num); -+ return -1; -+ } -+ static int validatePeerCert(void *obj, const char *str) -+ { -+ if (obj) -+ return static_cast<OpenconnectAuthWorkerThread*>(obj)->validatePeerCert(NULL, str); -+ return -1; -+ } -+#else - static int writeNewConfig(void *obj, char *str, int num) - { - if (obj) -@@ -55,7 +69,8 @@ - return static_cast<OpenconnectAuthWorkerThread*>(obj)->validatePeerCert(cert, str); - return -1; - } -- static int processAuthForm(void *obj, struct oc_auth_form *form) -+#endif -+ static int processAuthForm(void *obj, struct oc_auth_form *form) - { - if (obj) - return static_cast<OpenconnectAuthWorkerThread*>(obj)->processAuthFormP(form); -@@ -108,7 +123,7 @@ - return m_openconnectInfo; - } - --int OpenconnectAuthWorkerThread::writeNewConfig(char *buf, int buflen) -+int OpenconnectAuthWorkerThread::writeNewConfig(const char *buf, int buflen) - { - Q_UNUSED(buflen) - if (*m_userDecidedToQuit) -@@ -139,10 +154,16 @@ - } - #endif - --int OpenconnectAuthWorkerThread::validatePeerCert(OPENCONNECT_X509 *cert, const char *reason) --{ -- if (*m_userDecidedToQuit) -- return -EINVAL; -+int OpenconnectAuthWorkerThread::validatePeerCert(void *cert, const char *reason) -+{ -+ if (*m_userDecidedToQuit) -+ return -EINVAL; -+ -+#if OPENCONNECT_CHECK_VER(5,0) -+ (void)cert; -+ const char *fingerprint = openconnect_get_peer_cert_hash(m_openconnectInfo); -+ char *details = openconnect_get_peer_cert_details(m_openconnectInfo); -+#else - char fingerprint[41]; - int ret = 0; - -@@ -151,7 +172,7 @@ - return ret; - - char *details = openconnect_get_cert_details(m_openconnectInfo, cert); -- -+#endif - bool accepted = false; - m_mutex->lock(); - QString qFingerprint(fingerprint); -@@ -160,7 +181,7 @@ - emit validatePeerCert(qFingerprint, qCertinfo, qReason, &accepted); - m_waitForUserInput->wait(m_mutex); - m_mutex->unlock(); -- ::free(details); -+ openconnect_free_cert_info(m_openconnectInfo, details); - if (*m_userDecidedToQuit) - return -EINVAL; - - ---- a/vpn/openconnect/openconnectauthworkerthread.h -+++ b/vpn/openconnect/openconnectauthworkerthread.h -@@ -59,6 +59,17 @@ - #define OC_FORM_RESULT_NEWGROUP 2 - #endif - -+#if OPENCONNECT_CHECK_VER(4,0) -+#define OC3DUP(x) (x) -+#else -+#define openconnect_set_option_value(opt, val) do { \ -+ struct oc_form_opt *_o = (opt); \ -+ free(_o->value); _o->value = strdup(val); \ -+ } while (0) -+#define openconnect_free_cert_info(v, x) ::free(x) -+#define OC3DUP(x) strdup(x) -+#endif -+ - #include <QThread> - - class QMutex; -@@ -85,8 +96,8 @@ - void run(); - - private: -- int writeNewConfig(char *, int); -- int validatePeerCert(OPENCONNECT_X509 *, const char *); -+ int writeNewConfig(const char *, int); -+ int validatePeerCert(void *, const char *); - int processAuthFormP(struct oc_auth_form *); - void writeProgress(int level, const char *, va_list); - -