From b76270bf9e6dd375e495fec92140a79a79415d27 Mon Sep 17 00:00:00 2001 From: Patrick J Volkerding Date: Wed, 19 May 2010 08:58:23 +0000 Subject: Slackware 13.1 Wed May 19 08:58:23 UTC 2010 Slackware 13.1 x86_64 stable is released! Lots of thanks are due -- see the RELEASE_NOTES and the rest of the ChangeLog for credits. The ISOs are on their way to replication, a 6 CD-ROM 32-bit set and a dual-sided 32-bit/64-bit x86/x86_64 DVD. We are taking pre-orders now at store.slackware.com, and offering a discount if you sign up for a subscription. Consider picking up a copy to help support the project. Thanks again to the Slackware community for testing, contributing, and generally holding us to a high level of quality. :-) Enjoy! --- source/kde/kdenetwork/kdenetwork.SlackBuild | 5 +- .../kdenetwork/kget.kde44.CVE-2010-1000-1511.diff | 212 +++++++++++ source/kde/kdenetwork/kopete-r986796.diff | 396 --------------------- source/kde/kdenetwork/slack-desc | 4 +- 4 files changed, 218 insertions(+), 399 deletions(-) create mode 100644 source/kde/kdenetwork/kget.kde44.CVE-2010-1000-1511.diff delete mode 100644 source/kde/kdenetwork/kopete-r986796.diff (limited to 'source/kde/kdenetwork') diff --git a/source/kde/kdenetwork/kdenetwork.SlackBuild b/source/kde/kdenetwork/kdenetwork.SlackBuild index 6939ad4c7..9ff64fb9e 100755 --- a/source/kde/kdenetwork/kdenetwork.SlackBuild +++ b/source/kde/kdenetwork/kdenetwork.SlackBuild @@ -47,7 +47,8 @@ echo "Building kdenetwork-$VERSION..." tar xvf $CWD/../src/kdenetwork-$VERSION.tar.?z* || exit 1 cd kdenetwork-$VERSION -zcat $CWD/kopete-r986796.diff.gz | patch -p4 --verbose || exit 1 +# CVE-2010-1000 and CVE-2010-1511: +zcat $CWD/kget.kde44.CVE-2010-1000-1511.diff.gz | patch -p0 --verbose || exit 1 chown -R root:root . find . \ @@ -59,6 +60,7 @@ find . \ mkdir -p build cd build cmake \ + $KDE_OPT_ARGS \ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \ -DCMAKE_BUILD_TYPE=Release \ @@ -66,6 +68,7 @@ cd build -DMAN_INSTALL_DIR=/usr/man \ -DSYSCONF_INSTALL_DIR=/etc/kde \ -DLIB_SUFFIX=${LIBDIRSUFFIX} \ + -DWITH_irc=ON \ .. make $NUMJOBS || exit 1 make install DESTDIR=$PKG || exit 1 diff --git a/source/kde/kdenetwork/kget.kde44.CVE-2010-1000-1511.diff b/source/kde/kdenetwork/kget.kde44.CVE-2010-1000-1511.diff new file mode 100644 index 000000000..fdabbff0d --- /dev/null +++ b/source/kde/kdenetwork/kget.kde44.CVE-2010-1000-1511.diff @@ -0,0 +1,212 @@ +Index: kget/transfer-plugins/metalink/metalink.cpp +=================================================================== +--- kget/transfer-plugins/metalink/metalink.cpp (revision 1124973) ++++ kget/transfer-plugins/metalink/metalink.cpp (revision 1124974) +@@ -99,6 +99,7 @@ + void Metalink::metalinkInit(const KUrl &src, const QByteArray &data) + { + kDebug(5001); ++ + bool justDownloaded = !m_localMetalinkLocation.isValid(); + if (!src.isEmpty()) + { +@@ -121,7 +122,9 @@ + //error + if (!m_metalink.isValid()) + { +- kDebug(5001) << "Unknown error when trying to load the .metalink-file"; ++ kError(5001) << "Unknown error when trying to load the .metalink-file. Metalink is not valid."; ++ setStatus(Job::Aborted); ++ setTransferChange(Tc_Status, true); + return; + } + +@@ -202,7 +205,7 @@ + if (!m_dataSourceFactory.size()) + { + KMessageBox::error(0, i18n("Download failed, no working URLs were found."), i18n("Error")); +- setStatus(Job::Aborted, i18n("An error occurred...."), SmallIcon("document-preview")); ++ setStatus(Job::Aborted); + setTransferChange(Tc_Status, true); + return; + } +@@ -227,16 +230,29 @@ + ui.treeView->hideColumn(FileItem::SignatureVerified); + dialog->setMainWidget(widget); + dialog->setCaption(i18n("File Selection")); +- dialog->setButtons(KDialog::Ok); +- connect(dialog, SIGNAL(finished()), this, SLOT(filesSelected())); ++ dialog->setButtons(KDialog::Ok | KDialog::Cancel); ++ connect(dialog, SIGNAL(finished(int)), this, SLOT(fileDlgFinished(int))); + + dialog->show(); + } + } + +-void Metalink::filesSelected() ++void Metalink::fileDlgFinished(int result) + { ++ //BEGIN HACK if the dialog was not accepted untick every file, so that the download does not start ++ //generally setStatus should do the job as well, but does not as it appears ++ if (result != QDialog::Accepted) { ++ for (int row = 0; row < fileModel()->rowCount(); ++row) { ++ QModelIndex index = fileModel()->index(row, FileItem::File); ++ if (index.isValid()) { ++ fileModel()->setData(index, Qt::Unchecked, Qt::CheckStateRole); ++ } ++ } ++ } ++ //END ++ + QModelIndexList files = fileModel()->fileIndexes(FileItem::File); ++ int numFilesSelected = 0; + foreach (const QModelIndex &index, files) + { + const KUrl dest = fileModel()->getUrl(index); +@@ -244,6 +260,9 @@ + if (m_dataSourceFactory.contains(dest)) + { + m_dataSourceFactory[dest]->setDoDownload(doDownload); ++ if (doDownload) { ++ ++numFilesSelected; ++ } + } + } + +@@ -252,9 +271,15 @@ + processedSizeChanged(); + speedChanged(); + ++ //no files selected to download or dialog rejected, stop the download ++ if (!numFilesSelected || (result != QDialog::Accepted)) { ++ setStatus(Job::Stopped);//FIXME ++ setTransferChange(Tc_Status, true); ++ return; ++ } ++ + //some files may be set to download, so start them as long as the transfer is not stopped +- if (status() != Job::Stopped) +- { ++ if (status() != Job::Stopped) { + startMetalink(); + } + } +Index: kget/transfer-plugins/metalink/metalink.h +=================================================================== +--- kget/transfer-plugins/metalink/metalink.h (revision 1124973) ++++ kget/transfer-plugins/metalink/metalink.h (revision 1124974) +@@ -81,7 +81,7 @@ + + private Q_SLOTS: + void metalinkInit(const KUrl &url = KUrl(), const QByteArray &data = QByteArray()); +- void filesSelected(); ++ void fileDlgFinished(int result); + void totalSizeChanged(KIO::filesize_t size); + void processedSizeChanged(); + void speedChanged(); +Index: kget/ui/metalinkcreator/metalinker.h +=================================================================== +--- kget/ui/metalinkcreator/metalinker.h (revision 1124973) ++++ kget/ui/metalinkcreator/metalinker.h (revision 1124974) +@@ -259,6 +259,14 @@ + KIO::filesize_t size; + CommonData data; + Resources resources; ++ ++ private: ++ /** ++ * Controlls if the name attribute is valid, i.e. it is not empty and ++ * does not contain any directory traversal directives or information, ++ * as described in the Metalink 4.0 specification 4.1.2.1. ++ */ ++ bool isValidNameAttribute() const; + }; + + class Files +Index: kget/ui/metalinkcreator/metalinker.cpp +=================================================================== +--- kget/ui/metalinkcreator/metalinker.cpp (revision 1124973) ++++ kget/ui/metalinkcreator/metalinker.cpp (revision 1124974) +@@ -528,14 +528,14 @@ + + bool KGetMetalink::File::isValid() const + { +- return !name.isEmpty() && resources.isValid(); ++ return isValidNameAttribute() && resources.isValid(); + } + + void KGetMetalink::File::load(const QDomElement &e) + { + data.load(e); + +- name = e.attribute("name"); ++ name = QUrl::fromPercentEncoding(e.attribute("name").toAscii()); + size = e.firstChildElement("size").text().toULongLong(); + + verification.load(e); +@@ -575,6 +575,22 @@ + resources.clear(); + } + ++ ++bool KGetMetalink::File::isValidNameAttribute() const ++{ ++ if (name.isEmpty()) { ++ kError(5001) << "Name attribute of Metalink::File is empty."; ++ return false; ++ } ++ ++ if (name.contains(QRegExp("$(\\.\\.?)?/")) || name.contains("/../") || name.endsWith("/..")) { ++ kError(5001) << "Name attribute of Metalink::File contains directory traversal directives:" << name; ++ return false; ++ } ++ ++ return true; ++} ++ + #ifdef HAVE_NEPOMUK + QHash KGetMetalink::File::properties() const + { +@@ -584,13 +600,28 @@ + + bool KGetMetalink::Files::isValid() const + { +- bool isValid = !files.empty(); +- foreach (const File &file, files) +- { +- isValid &= file.isValid(); ++ if (files.isEmpty()) { ++ return false; + } + +- return isValid; ++ QStringList fileNames; ++ foreach (const File &file, files) { ++ fileNames << file.name; ++ if (!file.isValid()) { ++ return false; ++ } ++ } ++ ++ //The value of name must be unique for each file ++ while (!fileNames.isEmpty()) { ++ const QString fileName = fileNames.takeFirst(); ++ if (fileNames.contains(fileName)) { ++ kError(5001) << "Metalink::File name" << fileName << "exists multiple times."; ++ return false; ++ } ++ } ++ ++ return true; + } + + void KGetMetalink::Files::load(const QDomElement &e) +@@ -751,7 +782,7 @@ + + for (QDomElement elem = filesElem.firstChildElement("file"); !elem.isNull(); elem = elem.nextSiblingElement("file")) { + File file; +- file.name = elem.attribute("name"); ++ file.name = QUrl::fromPercentEncoding(elem.attribute("name").toAscii()); + file.size = elem.firstChildElement("size").text().toULongLong(); + + file.data = parseCommonData(elem); diff --git a/source/kde/kdenetwork/kopete-r986796.diff b/source/kde/kdenetwork/kopete-r986796.diff deleted file mode 100644 index a251b3288..000000000 --- a/source/kde/kdenetwork/kopete-r986796.diff +++ /dev/null @@ -1,396 +0,0 @@ -Index: branches/KDE/4.2/kdenetwork/kopete/protocols/yahoo/libkyahoo/logintask.h -=================================================================== ---- branches/KDE/4.2/kdenetwork/kopete/protocols/yahoo/libkyahoo/logintask.h (revision 986795) -+++ branches/KDE/4.2/kdenetwork/kopete/protocols/yahoo/libkyahoo/logintask.h (revision 986796) -@@ -26,7 +26,13 @@ - - class QString; - class YMSGTransfer; -+class KJob; - -+namespace KIO -+{ -+ class Job; -+} -+ - /** - @author Duncan Mac-Vicar - */ -@@ -58,6 +64,15 @@ - void sendAuthResp_pre_0x0b(const QString &sn, const QString &seed); - void handleAuthResp(YMSGTransfer *transfer); - void parseCookies( YMSGTransfer *transfer ); -+ void sendAuthSixteenStage1(const QString& sn, const QString& seed); -+ void sendAuthSixteenStage2(const QString& token); -+ void sendAuthSixteenStage3(const QString& cryptString); -+protected Q_SLOTS: -+ void handleAuthSixteenStage1Data(KIO::Job*, const QByteArray& data); -+ void handleAuthSixteenStage1Result(KJob*); -+ void handleAuthSixteenStage2Data(KIO::Job*, const QByteArray& data); -+ void handleAuthSixteenStage2Result(KJob*); -+ - signals: - void haveSessionID( uint ); - void haveCookies(); -@@ -71,6 +86,10 @@ - QString m_cCookie; - QString m_loginCookie; - QString m_verificationWord; -+ QString m_stage1Data; -+ QString m_stage2Data; -+ QString m_challengeString; -+ uint m_sessionID; - }; - - #endif -Index: branches/KDE/4.2/kdenetwork/kopete/protocols/yahoo/libkyahoo/logintask.cpp -=================================================================== ---- branches/KDE/4.2/kdenetwork/kopete/protocols/yahoo/libkyahoo/logintask.cpp (revision 986795) -+++ branches/KDE/4.2/kdenetwork/kopete/protocols/yahoo/libkyahoo/logintask.cpp (revision 986796) -@@ -3,10 +3,10 @@ - Handles logging into to the Yahoo service - - Copyright (c) 2004 Duncan Mac-Vicar P. -- - Copyright (c) 2005-2006 André Duffeck -+ Copyright 2009 Matt Rogers - -- Kopete (c) 2002-2006 by the Kopete developers -+ Kopete (c) 2002-2009 by the Kopete developers - - ************************************************************************* - * * -@@ -28,6 +28,10 @@ - #include - #include - #include -+ -+#include -+#include -+#include - extern "C" - { - #include "libyahoo.h" -@@ -177,52 +181,197 @@ - - QString sn = t->firstParam( 1 ); - QString seed = t->firstParam( 94 ); -+ m_challengeString = seed; - QString version_s = t->firstParam( 13 ); -- uint sessionID = t->id(); -+ m_sessionID = t->id(); - int version = version_s.toInt(); - - switch (version) - { - case 0: -- kDebug(YAHOO_RAW_DEBUG) << " Version pre 0x0b "<< version_s; -- break; -+ case 1: -+ case 2: -+ kDebug(YAHOO_RAW_DEBUG) << "Using version 16 authorization" << endl; -+ sendAuthSixteenStage1(sn, seed); -+ break; - default: -- kDebug(YAHOO_RAW_DEBUG) << " Version 0x0b "<< version_s; -- sendAuthResp_0x0b(sn, seed, sessionID); -+ kWarning(YAHOO_RAW_DEBUG) << "Unknown authentication method used!" -+ << "Attempting current authentication anyways"; -+ sendAuthSixteenStage1(sn, seed); - break; - } - mState = SentAuthResp; - -- emit haveSessionID( sessionID ); -+ emit haveSessionID( m_sessionID ); - } - --void LoginTask::sendAuthResp_0x0b(const QString &sn, const QString &seed, uint sessionID) -+void LoginTask::sendAuthSixteenStage1(const QString& sn, const QString& seed) - { -- kDebug(YAHOO_RAW_DEBUG) << " with seed " << seed; -- char *resp_6 = (char *) malloc(100); -- char *resp_96 = (char *) malloc(100); -- authresp_0x0b(seed.toLatin1(), sn.toLatin1(), (client()->password()).toLatin1(), resp_6, resp_96); -- kDebug(YAHOO_RAW_DEBUG) << "resp_6: " << resp_6 << " resp_69: " << resp_96; -+ const QString YahooTokenUrl = "https://login.yahoo.com/config/pwtoken_get?src=ymsgr&ts=&login=%1&passwd=%2&chal=%3"; -+ kDebug(YAHOO_RAW_DEBUG) << "seed:" << seed; -+ m_stage1Data.clear(); -+ /* construct a URL from the seed and request tokens */ -+ QByteArray encodedUrl; -+ QString fullUrl = YahooTokenUrl.arg(sn, client()->password(), seed); -+ KUrl tokenUrl(fullUrl); -+ KIO::Job* job = KIO::get(tokenUrl, KIO::Reload, KIO::HideProgressInfo); -+ connect(job, SIGNAL(data(KIO::Job*, const QByteArray&)), -+ this, SLOT(handleAuthSixteenStage1Data(KIO::Job*, const QByteArray&))); -+ connect(job, SIGNAL(result(KJob*)), -+ this, SLOT(handleAuthSixteenStage1Result(KJob*))); -+} -+ -+void LoginTask::handleAuthSixteenStage1Data(KIO::Job* job, const QByteArray& data) -+{ -+ kDebug(YAHOO_RAW_DEBUG) << "data:" << data; -+ m_stage1Data.append(data); -+} -+ -+void LoginTask::handleAuthSixteenStage1Result(KJob* job) -+{ -+ int responseNumber = -1; -+ QString token; -+ int error = job->error(); -+ kDebug(YAHOO_RAW_DEBUG) << "error:" << error; -+ if (error == 0) -+ { -+ QStringList responses = m_stage1Data.split("\r\n"); -+ if (responses.count() >= 3) -+ { -+ responseNumber = responses[0].toInt(); -+ token = responses[1]; -+ token.remove("ymsgr="); -+ kDebug(YAHOO_RAW_DEBUG) << "response is:" << responseNumber; -+ kDebug(YAHOO_RAW_DEBUG) << "token is:" << token; -+ } -+ -+ if (responseNumber != 0) -+ { -+ switch(responseNumber) -+ { -+ case -1: -+ /* error in the received stream */ -+ emit loginResponse(Yahoo::LoginSock, QString()); -+ kDebug(YAHOO_RAW_DEBUG) << "unknown error logging in"; -+ break; -+ case 1212: -+ /* password incorrect */ -+ emit loginResponse(Yahoo::LoginPasswd, QString()); -+ kDebug(YAHOO_RAW_DEBUG) << "password incorrect"; -+ break; -+ case 1213: -+ /* security lock */ -+ emit loginResponse(Yahoo::LoginLock, QString()); -+ break; -+ case 1235: -+ /* username does not exist */ -+ emit loginResponse(Yahoo::LoginUname, QString()); -+ kDebug(YAHOO_RAW_DEBUG) << "user does not exist"; -+ break; -+ case 1214: -+ case 1236: -+ emit loginResponse(Yahoo::LoginVerify, QString()); -+ break; -+ case 100: /* username or password missing */ -+ /*FIXME handle this */ -+ break; -+ default: -+ /* FIXME unknown error. handle it! */ -+ break; -+ } -+ } -+ else -+ { -+ /* start stage 2 here */ -+ sendAuthSixteenStage2(token); -+ } -+ } -+} -+ -+void LoginTask::sendAuthSixteenStage2(const QString& token) -+{ -+ const QString YahooLoginUrl = "https://login.yahoo.com/config/pwtoken_login?src=ymsgr&ts=&token=%1"; -+ kDebug(YAHOO_RAW_DEBUG) << "token:" << token; -+ m_stage2Data.clear(); -+ QString fullUrl = YahooLoginUrl.arg(token); -+ KUrl loginUrl(fullUrl); -+ KIO::Job* job = KIO::get(loginUrl, KIO::Reload, KIO::HideProgressInfo); -+ connect(job, SIGNAL(data(KIO::Job*, const QByteArray&)), -+ this, SLOT(handleAuthSixteenStage2Data(KIO::Job*, const QByteArray&))); -+ connect(job, SIGNAL(result(KJob*)), -+ this, SLOT(handleAuthSixteenStage2Result(KJob*))); -+} -+ -+void LoginTask::handleAuthSixteenStage2Data(KIO::Job*, const QByteArray& data) -+{ -+ kDebug(YAHOO_RAW_DEBUG) << "data:" << data; -+ m_stage2Data.append(data); -+} -+ -+void LoginTask::handleAuthSixteenStage2Result(KJob* job) -+{ -+ QString crumb; -+ int responseNumber = -1; -+ int error = job->error(); -+ kDebug(YAHOO_RAW_DEBUG) << "error:" << error; -+ if (error == 0) -+ { -+ QStringList responses = m_stage2Data.split("\r\n"); -+ kDebug(YAHOO_RAW_DEBUG) << responses; -+ responseNumber = responses[0].toInt(); -+ if (responseNumber == 0) -+ { -+ crumb = responses[1]; -+ crumb.remove("crumb="); -+ m_yCookie = responses[2].remove(0,2); /* remove Y= */ -+ m_tCookie = responses[3].remove(0,2); /* remove T= */ -+ } -+ -+ if (responseNumber != 0) -+ { -+ switch(responseNumber) -+ { -+ case -1: -+ emit loginResponse(Yahoo::LoginSock, QString()); -+ break; -+ case 100: -+ emit loginResponse(Yahoo::LoginSock, QString()); -+ break; -+ default: /* try to login anyways */ -+ break; -+ } -+ } -+ else -+ { -+ QString cryptString = crumb; -+ cryptString.append(m_challengeString); -+ sendAuthSixteenStage3(cryptString); -+ } -+ } -+} -+ -+void LoginTask::sendAuthSixteenStage3(const QString& cryptString) -+{ -+ kDebug(YAHOO_RAW_DEBUG) << " with crypt string" << cryptString; -+ QByteArray cryptStringHash = QCryptographicHash::hash( cryptString.toAscii(), -+ QCryptographicHash::Md5 ); -+ cryptStringHash = cryptStringHash.toBase64(); -+ cryptStringHash = cryptStringHash.replace('+', '.'); -+ cryptStringHash = cryptStringHash.replace('/', '_'); -+ cryptStringHash = cryptStringHash.replace('=', '-'); -+ - YMSGTransfer *t = new YMSGTransfer(Yahoo::ServiceAuthResp, m_stateOnConnect); -- t->setId( sessionID ); -- t->setParam( 0 , sn.toLocal8Bit()); -- t->setParam( 2 , sn.toLocal8Bit()); -+ t->setId( m_sessionID ); -+ t->setParam( 1, client()->userId().toLocal8Bit()); -+ t->setParam( 0 , client()->userId().toLocal8Bit()); -+ t->setParam( 277, m_yCookie.toLocal8Bit() ); -+ t->setParam( 278, m_tCookie.toLocal8Bit() ); -+ t->setParam( 307, cryptStringHash ); -+ t->setParam( 244, 2097087 ); -+ t->setParam( 2 , client()->userId().toLocal8Bit()); - t->setParam( 2, 1 ); // Both parameter 2s wind up in the packet -- t->setParam( 6 , resp_6); -- t->setParam( 1, sn.toLocal8Bit()); -- t->setParam( 244, 2097087 ); - t->setParam( 135, YMSG_PROGRAM_VERSION_STRING ); -- t->setParam( 148, 480 ); -- t->setParam( 59 , "B\\tfckeert1kk1nl&b=2" ); // ??? - -- if( !m_verificationWord.isEmpty() ) -- { -- t->setParam( 227 , m_verificationWord.toLocal8Bit() ); -- m_verificationWord.clear(); -- } -- -- free(resp_6); -- free(resp_96); - send(t); - - } -Index: branches/KDE/4.2/kdenetwork/kopete/protocols/yahoo/yahooeditaccount.cpp -=================================================================== ---- branches/KDE/4.2/kdenetwork/kopete/protocols/yahoo/yahooeditaccount.cpp (revision 986795) -+++ branches/KDE/4.2/kdenetwork/kopete/protocols/yahoo/yahooeditaccount.cpp (revision 986796) -@@ -63,9 +63,9 @@ - mAutoConnect->setChecked(acct->excludeConnect()); - mPasswordWidget->load( &acct->password() ); - -- QString pagerServer = account()->configGroup()->readEntry("Server", "scs.msg.yahoo.com"); -+ QString pagerServer = account()->configGroup()->readEntry("Server", "scsa.msg.yahoo.com"); - int pagerPort = account()->configGroup()->readEntry("Port", 5050); -- if( pagerServer != "scs.msg.yahoo.com" || pagerPort != 5050 ) -+ if( pagerServer != "scsa.msg.yahoo.com" || pagerPort != 5050 ) - optionOverrideServer->setChecked( true ); - else - optionOverrideServer->setChecked( false ); -@@ -133,7 +133,7 @@ - } - else - { -- yahooAccount->setServer( "scs.msg.yahoo.com" ); -+ yahooAccount->setServer( "scsa.msg.yahoo.com" ); - yahooAccount->setPort( 5050 ); - } - -Index: branches/KDE/4.2/kdenetwork/kopete/protocols/yahoo/yahooaccount.cpp -=================================================================== ---- branches/KDE/4.2/kdenetwork/kopete/protocols/yahoo/yahooaccount.cpp (revision 986795) -+++ branches/KDE/4.2/kdenetwork/kopete/protocols/yahoo/yahooaccount.cpp (revision 986796) -@@ -539,7 +539,7 @@ - return; - } - -- QString server = configGroup()->readEntry( "Server", "scs.msg.yahoo.com" ); -+ QString server = configGroup()->readEntry( "Server", "scsa.msg.yahoo.com" ); - int port = configGroup()->readEntry( "Port", 5050 ); - - initConnectionSignals( MakeConnections ); -Index: branches/KDE/4.2/kdenetwork/kopete/kopete/kconf_update/kopete-update_yahoo_server.upd -=================================================================== ---- branches/KDE/4.2/kdenetwork/kopete/kopete/kconf_update/kopete-update_yahoo_server.upd (revision 0) -+++ branches/KDE/4.2/kdenetwork/kopete/kopete/kconf_update/kopete-update_yahoo_server.upd (revision 986796) -@@ -0,0 +1,4 @@ -+Id=kopete-update-yahoo-server/r1 -+File=kopeterc -+Options=overwrite -+Script=kopete-update_yahoo_server.pl,perl -Index: branches/KDE/4.2/kdenetwork/kopete/kopete/kconf_update/kopete-update_yahoo_server.pl -=================================================================== ---- branches/KDE/4.2/kdenetwork/kopete/kopete/kconf_update/kopete-update_yahoo_server.pl (revision 0) -+++ branches/KDE/4.2/kdenetwork/kopete/kopete/kconf_update/kopete-update_yahoo_server.pl (revision 986796) -@@ -0,0 +1,20 @@ -+#!/usr/bin/perl -+ -+# Rename the old Gaim style to Pidgin -+ -+my $inYahoo = 0; -+foreach (<>) { -+ $inYahoo = 1 if (/^\[Account_YahooProtocol_.*$/); -+ if ($inYahoo) { -+ if (/^Server\=(.*)/) { -+ my $oldServer = $1; -+ if ($oldServer =~ m/\.yahoo\.com$/) { -+ print "Server=scsa.msg.yahoo.com\n"; -+ $inYahoo = 0; -+ next; -+ } -+ } -+ } -+ -+ print $_; -+} - -Property changes on: branches/KDE/4.2/kdenetwork/kopete/kopete/kconf_update/kopete-update_yahoo_server.pl -___________________________________________________________________ -Added: svn:executable - + * - -Index: branches/KDE/4.2/kdenetwork/kopete/kopete/kconf_update/CMakeLists.txt -=================================================================== ---- branches/KDE/4.2/kdenetwork/kopete/kopete/kconf_update/CMakeLists.txt (revision 986795) -+++ branches/KDE/4.2/kdenetwork/kopete/kopete/kconf_update/CMakeLists.txt (revision 986796) -@@ -4,10 +4,11 @@ - endif(NOT WIN32) - - --install( FILES kopete-pluginloader.upd kopete-nameTracking.upd kopete-initialstatus.upd DESTINATION ${KCONF_UPDATE_INSTALL_DIR}) -+install( FILES kopete-pluginloader.upd kopete-nameTracking.upd kopete-initialstatus.upd kopete-update_yahoo_server.upd DESTINATION ${KCONF_UPDATE_INSTALL_DIR}) - --install( PROGRAMS kopete-pluginloader.pl -- kopete-account-0.10.pl kopete-initialstatus.pl DESTINATION ${KCONF_UPDATE_INSTALL_DIR}) -+install( PROGRAMS kopete-pluginloader.pl kopete-update_yahoo_server.pl -+ kopete-account-0.10.pl kopete-initialstatus.pl -+ DESTINATION ${KCONF_UPDATE_INSTALL_DIR}) - - - #TODO kconf_program ? diff --git a/source/kde/kdenetwork/slack-desc b/source/kde/kdenetwork/slack-desc index 03fdd8fd9..90120dd93 100644 --- a/source/kde/kdenetwork/slack-desc +++ b/source/kde/kdenetwork/slack-desc @@ -6,9 +6,9 @@ # customary to leave one space after the ':'. |-----handy-ruler------------------------------------------------------| -kdenetwork: kdenetwork (network utilities for KDE) +kdenetwork: kdenetwork (Network utilities for KDE) kdenetwork: -kdenetwork: Network related utilities for the K Desktop Environment. +kdenetwork: Network related utilities for the KDE Software Compilation. kdenetwork: kdenetwork: kdenetwork: -- cgit v1.2.3-65-gdbad