diff -Nru libkylin-nm-base-4.10.0.0/debian/changelog libkylin-nm-base-4.10.0.0/debian/changelog --- libkylin-nm-base-4.10.0.0/debian/changelog 2023-10-19 10:35:27.000000000 +0800 +++ libkylin-nm-base-4.10.0.0/debian/changelog 2025-02-28 16:11:44.000000000 +0800 @@ -1,3 +1,9 @@ +libkylin-nm-base (4.10.0.0-ok2) nile; urgency=medium + + * v11代码同源 + + -- lixiang1 <lixiang1@kylinos.cn> Fri, 28 Feb 2025 16:11:44 +0800 + libkylin-nm-base (4.10.0.0-ok1) nile; urgency=medium * BUG号: diff -Nru libkylin-nm-base-4.10.0.0/debian/patches/0001-changelog.patch libkylin-nm-base-4.10.0.0/debian/patches/0001-changelog.patch --- libkylin-nm-base-4.10.0.0/debian/patches/0001-changelog.patch 1970-01-01 08:00:00.000000000 +0800 +++ libkylin-nm-base-4.10.0.0/debian/patches/0001-changelog.patch 2025-02-28 16:11:44.000000000 +0800 @@ -0,0 +1,245 @@ +From: Lixit <lixiang1@kylinos.cn> +Date: Fri, 28 Feb 2025 16:12:02 +0800 +Subject: changelog + +--- + .../depend/kyenterpricesettinginfo.h | 20 +++++++++++++ + .../depend/kylinnetworkresourcemanager.cpp | 6 ++-- + .../depend/kynetloadratethread.cpp | 10 ++++--- + .../depend/kywirelessnetresource.cpp | 35 ++++++++++++++++++++++ + .../depend/kywirelessnetresource.h | 1 + + libnm-kylin/libnm-base-kylin/kylinnetworkmanager.h | 1 + + .../libnm-base-kylin/kylinnetworkmanger.cpp | 5 ++++ + .../kylin-tool/kylinipv4arping.cpp | 4 +-- + .../kylin-tool/kylinipv6arping.cpp | 11 +++---- + 9 files changed, 80 insertions(+), 13 deletions(-) + +diff --git a/libnm-kylin/libnm-base-kylin/depend/kyenterpricesettinginfo.h b/libnm-kylin/libnm-base-kylin/depend/kyenterpricesettinginfo.h +index 01c8b29..05cbbe3 100644 +--- a/libnm-kylin/libnm-base-kylin/depend/kyenterpricesettinginfo.h ++++ b/libnm-kylin/libnm-base-kylin/depend/kyenterpricesettinginfo.h +@@ -135,6 +135,26 @@ public: + } + }; + ++class KyEapMethodLeapInfo ++{ ++public: ++ QString m_userName; ++ QString m_userPwd; ++ NetworkManager::Setting::SecretFlags m_passwdFlag; ++ // only valid when update ++ bool bChanged; ++ ++ inline bool operator == (const KyEapMethodLeapInfo& info) const ++ { ++ if (this->m_userName == info.m_userName ++ && this->m_userPwd == info.m_userPwd ++ && this->m_passwdFlag == info.m_passwdFlag) { ++ return true; ++ } else { ++ return false; ++ } ++ } ++}; + void assembleEapMethodTlsSettings(NetworkManager::ConnectionSettings::Ptr connSettingPtr, const KyEapMethodTlsInfo &tlsInfo); + void assembleEapMethodPeapSettings(NetworkManager::ConnectionSettings::Ptr connSettingPtr, const KyEapMethodPeapInfo &peapInfo); + void assembleEapMethodTtlsSettings(NetworkManager::ConnectionSettings::Ptr connSettingPtr, const KyEapMethodTtlsInfo &ttlsInfo); +diff --git a/libnm-kylin/libnm-base-kylin/depend/kylinnetworkresourcemanager.cpp b/libnm-kylin/libnm-base-kylin/depend/kylinnetworkresourcemanager.cpp +index 2e2c2c1..9585398 100644 +--- a/libnm-kylin/libnm-base-kylin/depend/kylinnetworkresourcemanager.cpp ++++ b/libnm-kylin/libnm-base-kylin/depend/kylinnetworkresourcemanager.cpp +@@ -696,9 +696,11 @@ void KyNetworkResourceManager::onActiveConnectionChanged( + if (interfaces.size() > 0) { + QString ifaceUni = interfaces.at(0); + NetworkManager::Device:: Ptr devicePtr = findDeviceByUni(ifaceUni); +- deviceName = devicePtr->interfaceName(); ++ if (devicePtr != nullptr) { ++ deviceName = devicePtr->interfaceName(); ++ } + } +- ++ + NetworkManager::Connection::Ptr connectPtr = activeConnect->connection(); + connectActiveStateChange(connectPtr, deviceName, (KyConnectState)state); + } else { +diff --git a/libnm-kylin/libnm-base-kylin/depend/kynetloadratethread.cpp b/libnm-kylin/libnm-base-kylin/depend/kynetloadratethread.cpp +index 065ed12..2ee8ebc 100644 +--- a/libnm-kylin/libnm-base-kylin/depend/kynetloadratethread.cpp ++++ b/libnm-kylin/libnm-base-kylin/depend/kynetloadratethread.cpp +@@ -60,6 +60,7 @@ int KyNetLoadRateThread::getCurrentLoadRate(QString dev, long *saveRate, long *t + QByteArray ba = dev.toLatin1(); // must + device = ba.data(); + int counter = 0; ++ unsigned int buffSize=0; + char tmpValue[128]; + + if ((NULL == device) || (NULL == saveRate) || (NULL == txRate)) { +@@ -81,12 +82,13 @@ int KyNetLoadRateThread::getCurrentLoadRate(QString dev, long *saveRate, long *t + // qDebug()<<"No eth0 keyword to find!"; + continue; + } else { +- match = match + strlen(device) + strlen(":"); //地址偏移到冒号 ++ match = match + qstrnlen(device,1024) + strlen(":"); //地址偏移到冒号 + sscanf(match, "%ld ", saveRate); + memset(tmpValue, 0, sizeof(tmpValue)); + sscanf(match, "%s ", tmpValue); +- match = match + strlen(tmpValue); +- for (size_t i = 0; i < strlen(buffer); ++i) { ++ match = match + qstrnlen(tmpValue,128); ++ buffSize=qstrnlen(buffer,1024); ++ for (size_t i = 0; i < buffSize; ++i) { + if (0x20 == *match) { + match++; + } else { +@@ -95,7 +97,7 @@ int KyNetLoadRateThread::getCurrentLoadRate(QString dev, long *saveRate, long *t + } + memset(tmpValue, 0, sizeof(tmpValue)); + sscanf(match, "%s ", tmpValue); +- match = match + strlen(tmpValue); ++ match = match + qstrnlen(tmpValue,128); + counter++; + } + } +diff --git a/libnm-kylin/libnm-base-kylin/depend/kywirelessnetresource.cpp b/libnm-kylin/libnm-base-kylin/depend/kywirelessnetresource.cpp +index 055a43e..bc95aaf 100644 +--- a/libnm-kylin/libnm-base-kylin/depend/kywirelessnetresource.cpp ++++ b/libnm-kylin/libnm-base-kylin/depend/kywirelessnetresource.cpp +@@ -477,6 +477,41 @@ bool KyWirelessNetResource::getEnterPriseInfoTtls(QString &uuid, KyEapMethodTtls + return true; + } + ++bool KyWirelessNetResource::getEnterPriseInfoLeap(QString &uuid, KyEapMethodLeapInfo &info) ++{ ++ NetworkManager::Connection::Ptr conn = m_networkResourceInstance->findConnectByUuid(uuid); ++ if (conn.isNull()) { ++ qDebug()<< LOG_FLAG << "getEnterPriseInfoLeap connection missing"; ++ return false; ++ } ++ NetworkManager::WirelessSecuritySetting::Ptr security_sett ++ = conn->settings()->setting(NetworkManager::Setting::WirelessSecurity).dynamicCast<NetworkManager::WirelessSecuritySetting>(); ++ if (security_sett.isNull()) { ++ qDebug()<< LOG_FLAG << "don't have WirelessSecurity connection"; ++ return false; ++ } ++ ++ if (security_sett->keyMgmt() != NetworkManager::WirelessSecuritySetting::WpaEap) { ++ qDebug()<< LOG_FLAG << "keyMgmt not WpaEap " << security_sett->keyMgmt(); ++ return false; ++ } ++ ++ NetworkManager::Security8021xSetting::Ptr setting = ++ conn->settings()->setting(NetworkManager::Setting::Security8021x).dynamicCast<NetworkManager::Security8021xSetting>(); ++ if (setting.isNull() || !setting->eapMethods().contains(NetworkManager::Security8021xSetting::EapMethod::EapMethodLeap)) { ++ qDebug()<< LOG_FLAG << "don't have Security8021x connection"; ++ return false; ++ } ++ ++ info.m_userName = setting->identity(); ++ info.m_passwdFlag = setting->passwordFlags(); ++ if (!info.m_passwdFlag) { ++ KyWirelessConnectOperation operation; ++ info.m_userPwd = operation.get8021xPassword(conn->uuid()); ++ } ++ ++ return true; ++} + void KyWirelessNetResource::getWirelessConnectDetail(QString interface, QString ssid, QString uuid, KyDetailInfo &connectSetting) + { + getBaseInfo(interface, ssid, true, !uuid.isEmpty(), connectSetting); +diff --git a/libnm-kylin/libnm-base-kylin/depend/kywirelessnetresource.h b/libnm-kylin/libnm-base-kylin/depend/kywirelessnetresource.h +index 8329b6d..2570810 100644 +--- a/libnm-kylin/libnm-base-kylin/depend/kywirelessnetresource.h ++++ b/libnm-kylin/libnm-base-kylin/depend/kywirelessnetresource.h +@@ -30,6 +30,7 @@ public: + bool getEnterPriseInfoTls(QString &uuid, KyEapMethodTlsInfo &info); + bool getEnterPriseInfoPeap(QString &uuid, KyEapMethodPeapInfo &info); + bool getEnterPriseInfoTtls(QString &uuid, KyEapMethodTtlsInfo &info); ++ bool getEnterPriseInfoLeap(QString &uuid, KyEapMethodLeapInfo &info); + + //获取企业网类型 + bool getEnterpiseEapMethod(const QString &uuid, KyEapMethodType &type); +diff --git a/libnm-kylin/libnm-base-kylin/kylinnetworkmanager.h b/libnm-kylin/libnm-base-kylin/kylinnetworkmanager.h +index fa8870a..7fdde81 100644 +--- a/libnm-kylin/libnm-base-kylin/kylinnetworkmanager.h ++++ b/libnm-kylin/libnm-base-kylin/kylinnetworkmanager.h +@@ -124,6 +124,7 @@ public: + bool getEnterPriseInfoTls(QString &uuid, KyEapMethodTlsInfo &info); + bool getEnterPriseInfoPeap(QString &uuid, KyEapMethodPeapInfo &info); + bool getEnterPriseInfoTtls(QString &uuid, KyEapMethodTtlsInfo &info); ++ bool getEnterPriseInfoLeap(QString &uuid, KyEapMethodLeapInfo &info); + + //获取企业网类型 + bool getEnterpiseEapMethod(const QString &uuid, KyEapMethodType &type); +diff --git a/libnm-kylin/libnm-base-kylin/kylinnetworkmanger.cpp b/libnm-kylin/libnm-base-kylin/kylinnetworkmanger.cpp +index 9377113..f7353ed 100644 +--- a/libnm-kylin/libnm-base-kylin/kylinnetworkmanger.cpp ++++ b/libnm-kylin/libnm-base-kylin/kylinnetworkmanger.cpp +@@ -210,6 +210,11 @@ bool KyNetworkManager::getEnterPriseInfoTtls(QString &uuid, KyEapMethodTtlsInfo + return resource.getEnterPriseInfoTtls(uuid, info); + } + ++bool KyNetworkManager::getEnterPriseInfoLeap(QString &uuid, KyEapMethodLeapInfo &info) ++{ ++ KyWirelessNetResource resource; ++ return resource.getEnterPriseInfoLeap(uuid, info); ++} + //获取企业网类型 + bool KyNetworkManager::getEnterpiseEapMethod(const QString &uuid, KyEapMethodType &type) + { +diff --git a/libnm-kylin/libnm-external-kylin/kylin-tool/kylinipv4arping.cpp b/libnm-kylin/libnm-external-kylin/kylin-tool/kylinipv4arping.cpp +index 2592d97..543b427 100644 +--- a/libnm-kylin/libnm-external-kylin/kylin-tool/kylinipv4arping.cpp ++++ b/libnm-kylin/libnm-external-kylin/kylin-tool/kylinipv4arping.cpp +@@ -56,9 +56,9 @@ void KyIpv4Arping::saveMacAddress(const uint8_t *ptr, size_t len) + char macAddress[64] = {0}; + + for (index = 0; index < len; index++) { +- snprintf(&macAddress[strlen(macAddress)], sizeof(macAddress) - strlen(macAddress), "%02X", ptr[index]); ++ snprintf(&macAddress[qstrlen(macAddress)], sizeof(macAddress) - qstrlen(macAddress), "%02X", ptr[index]); + if (index != len - 1) { +- snprintf(&macAddress[strlen(macAddress)], sizeof(macAddress) - strlen(macAddress), "%s", ":"); ++ snprintf(&macAddress[qstrlen(macAddress)], sizeof(macAddress) - qstrlen(macAddress), "%s", ":"); + } + } + +diff --git a/libnm-kylin/libnm-external-kylin/kylin-tool/kylinipv6arping.cpp b/libnm-kylin/libnm-external-kylin/kylin-tool/kylinipv6arping.cpp +index 79d2ee1..44c1b3c 100644 +--- a/libnm-kylin/libnm-external-kylin/kylin-tool/kylinipv6arping.cpp ++++ b/libnm-kylin/libnm-external-kylin/kylin-tool/kylinipv6arping.cpp +@@ -43,11 +43,12 @@ int KyIpv6Arping::getLocalMacAddress(const char *ifname, unsigned char *addr) + struct ifreq req; + memset (&req, 0, sizeof (req)); + +- if (((unsigned)strlen (ifname)) >= (unsigned)IFNAMSIZ) { ++ if (((unsigned)qstrlen (ifname)) >= (unsigned)IFNAMSIZ) { + return -1; /* buffer overflow = local root */ + } + +- strcpy (req.ifr_name, ifname); ++ strncpy (req.ifr_name, ifname,sizeof(req.ifr_name)); ++ req.ifr_name[sizeof(req.ifr_name)-1]=0; + + int fd = socket (AF_INET6, SOCK_DGRAM, 0); + if (fd == -1) { +@@ -139,9 +140,9 @@ void KyIpv6Arping::saveMacAddress (const uint8_t *ptr, size_t len) + char macAddress[64] = {0}; + + for (index = 0; index < len; index++) { +- snprintf(&macAddress[strlen(macAddress)], sizeof(macAddress) - strlen(macAddress), "%02X", ptr[index]); ++ snprintf(&macAddress[qstrlen(macAddress)], sizeof(macAddress) - qstrlen(macAddress), "%02X", ptr[index]); + if (index != len - 1) { +- snprintf(&macAddress[strlen(macAddress)], sizeof(macAddress) - strlen(macAddress), "%s", ":"); ++ snprintf(&macAddress[qstrlen(macAddress)], sizeof(macAddress) - qstrlen(macAddress), "%s", ":"); + } + } + +@@ -160,7 +161,7 @@ int KyIpv6Arping::parseIpv6Packet(const uint8_t *buf, size_t len, const struct s + if ((len < sizeof (struct nd_neighbor_advert)) + || (na->nd_na_type != ND_NEIGHBOR_ADVERT) + || (na->nd_na_code != 0) +- || memcmp (&na->nd_na_target, &tgt->sin6_addr, 16)) { ++ || memcmp(na->nd_na_target.__in6_u.__u6_addr8, tgt->sin6_addr.__in6_u.__u6_addr8, 16)) { + return -1; + } + len -= sizeof (struct nd_neighbor_advert); diff -Nru libkylin-nm-base-4.10.0.0/debian/patches/series libkylin-nm-base-4.10.0.0/debian/patches/series --- libkylin-nm-base-4.10.0.0/debian/patches/series 1970-01-01 08:00:00.000000000 +0800 +++ libkylin-nm-base-4.10.0.0/debian/patches/series 2025-02-28 16:11:44.000000000 +0800 @@ -0,0 +1 @@ +0001-changelog.patch