From 1b9bfbbb280e67544d8cee4f106a7271ea3f161d Mon Sep 17 00:00:00 2001 From: Vedhavalli Loganathan Date: Thu, 22 Jan 2026 09:15:41 +0530 Subject: [PATCH] IPQ: Bug Fixes for QCOM Platform Signed-off-by: Vedhavalli Loganathan --- .../dhcp_server_functions.sh | 2 +- .../apply_system_defaults.c | 33 +++++++++++-------- .../init/src/apply_system_defaults_helper.c | 14 ++++---- source/util/utils/util.c | 3 +- 4 files changed, 29 insertions(+), 23 deletions(-) diff --git a/source/scripts/init/service.d/service_dhcp_server/dhcp_server_functions.sh b/source/scripts/init/service.d/service_dhcp_server/dhcp_server_functions.sh index faec0aca..66119e13 100755 --- a/source/scripts/init/service.d/service_dhcp_server/dhcp_server_functions.sh +++ b/source/scripts/init/service.d/service_dhcp_server/dhcp_server_functions.sh @@ -987,7 +987,7 @@ then if [ "$noRf" = "0" ] then - if [ "$NETWORKRESPONSESTATUS" = "204" ] && [ "$REDIRECTION_ON" = "true" ] && [ "$WIFI_NOT_CONFIGURED" = "true" ] + if [[ "$NETWORKRESPONSESTATUS" = "204" && "$REDIRECTION_ON" = "true" && ("$WIFI_NOT_CONFIGURED" = "true" || "$WIFI_NOT_CONFIGURED" = "TRUE") ]]; then CAPTIVE_PORTAL_MODE="true" echo "DHCP SERVER : WiFi SSID and Passphrase are not modified,set CAPTIVE_PORTAL_MODE" diff --git a/source/scripts/init/src/apply_system_defaults/apply_system_defaults.c b/source/scripts/init/src/apply_system_defaults/apply_system_defaults.c index 0a589550..e0c03efb 100644 --- a/source/scripts/init/src/apply_system_defaults/apply_system_defaults.c +++ b/source/scripts/init/src/apply_system_defaults/apply_system_defaults.c @@ -733,7 +733,7 @@ static int getFactoryPartnerId (char *pValue) return -1; } -static int validatePartnerId (char *PartnerID) +static int validatePartnerId (char *PartnerID, size_t partnerIdBufLen) { int result = 0; char* ptr_etc_jsons = NULL; @@ -753,7 +753,7 @@ static int validatePartnerId (char *PartnerID) else { printf("Partner ID NOT Found\n"); - sprintf(PartnerID,"%s","unknown"); + snprintf(PartnerID,partnerIdBufLen,"%s","unknown"); } cJSON_Delete(root_etc_json); } @@ -771,7 +771,7 @@ static int PartnerId_FetchWithRetry(char *PartnerID ) { memset(PartnerID, 0, PARTNER_ID_LEN); if((0 == getFactoryPartnerId(PartnerID)) && (PartnerID[0] != '\0') && - validatePartnerId(PartnerID) && (0 != strcasecmp (PartnerID, "Unknown"))) { + validatePartnerId(PartnerID, PARTNER_ID_LEN) && (0 != strcasecmp (PartnerID, "Unknown"))) { return 0; } else { @@ -782,7 +782,7 @@ static int PartnerId_FetchWithRetry(char *PartnerID ) { strncpy(PartnerID, buf, strlen(buf)); PartnerID[strlen(buf)] = '\0'; - if(validatePartnerId(PartnerID) && (0 != strcasecmp(PartnerID, "Unknown") )) { + if(validatePartnerId(PartnerID, PARTNER_ID_LEN) && (0 != strcasecmp(PartnerID, "Unknown") )) { return 0; } } @@ -828,7 +828,7 @@ int WritePartnerIDToFile(char* PartnerID) { } void CheckAndHandleInvalidPartnerIDRecoveryProcess(char *PartnerID) { - if( '\0' == PartnerID[0] || (0 == validatePartnerId(PartnerID)) || (0 == strcasecmp (PartnerID, "Unknown")) ) { + if( '\0' == PartnerID[0] || (0 == validatePartnerId(PartnerID, PARTNER_ID_LEN)) || (0 == strcasecmp (PartnerID, "Unknown")) ) { memset(PartnerID, 0, PARTNER_ID_LEN); APPLY_PRINT("%s - Current PartnerID value is Unknown/Invalid, So retrying to obtain valid PartnerID values. \n", __FUNCTION__); @@ -889,7 +889,7 @@ static int get_PartnerID (char *PartnerID) if( ( 0 == getFactoryPartnerId( PartnerID ) ) && ( PartnerID [ 0 ] != '\0' ) ) { APPLY_PRINT("%s - PartnerID from HAL: %s\n",__FUNCTION__,PartnerID ); - validatePartnerId ( PartnerID ); + validatePartnerId ( PartnerID, PARTNER_ID_LEN ); } else { @@ -908,7 +908,7 @@ static int get_PartnerID (char *PartnerID) #if defined (_XB6_PRODUCT_REQ_) sprintf( PartnerID, "%s", "unknown" ); -#elif defined (_RDK_REF_PLATFORM_) +#elif defined (_RDK_REF_PLATFORM_) || defined (_COSA_QCA_ARM_) sprintf( PartnerID, "%s", "RDKM"); #elif defined (_SR300_PRODUCT_REQ_) /* Default fall back option for ADA devices SKYH4-4946 */ sprintf( PartnerID, "%s", "sky-uk"); @@ -941,7 +941,7 @@ static int get_PartnerID (char *PartnerID) sprintf( PartnerID, "%s", fileContent ); APPLY_PRINT("%s - PartnerID from File: %s\n",__FUNCTION__,PartnerID ); - validatePartnerId ( PartnerID ); + validatePartnerId ( PartnerID, PARTNER_ID_LEN ); unlink("/nvram/.partner_ID"); } set_syscfg_partner_values(PartnerID,"PartnerID"); @@ -2349,6 +2349,7 @@ static int apply_partnerId_default_values (char *data, char *PartnerID) cJSON *alwaysParamObjVal = NULL; char *error_ptr = NULL; int iterator = 0; + char buf[50] = {0}; /* * Case 1: @@ -2479,8 +2480,9 @@ static int apply_partnerId_default_values (char *data, char *PartnerID) if ( paramObjVal != NULL ) { defaultAdminIP = paramObjVal->valuestring; + syscfg_get( NULL, "lan_ipaddr", buf, sizeof( buf )); - if (defaultAdminIP != NULL) + if ((defaultAdminIP != NULL) && (strcmp(buf, defaultAdminIP) == 0)) { set_syscfg_partner_values(defaultAdminIP,"lan_ipaddr"); defaultAdminIP = NULL; @@ -2494,9 +2496,10 @@ static int apply_partnerId_default_values (char *data, char *PartnerID) paramObjVal = cJSON_GetObjectItem(cJSON_GetObjectItem( partnerObj, "Device.DeviceInfo.X_RDKCENTRAL-COM_Syndication.RDKB_UIBranding.DefaultLocalIPv4SubnetRange"), "ActiveValue"); if ( paramObjVal != NULL ) { - subnetRange = paramObjVal->valuestring; + subnetRange = paramObjVal->valuestring; + syscfg_get( NULL, "lan_netmask", buf, sizeof( buf )); - if (subnetRange != NULL) + if ((subnetRange != NULL) && (strcmp(buf, subnetRange) == 0)) { set_syscfg_partner_values(subnetRange,"lan_netmask"); subnetRange = NULL; @@ -2510,8 +2513,9 @@ static int apply_partnerId_default_values (char *data, char *PartnerID) if ( paramObjVal != NULL ) { minAddress = paramObjVal->valuestring; + syscfg_get( NULL, "dhcp_start", buf, sizeof( buf )); - if (minAddress != NULL) + if ((minAddress != NULL) && (strcmp(buf, minAddress) ==0)) { set_syscfg_partner_values(minAddress,"dhcp_start"); minAddress = NULL; @@ -2525,8 +2529,9 @@ static int apply_partnerId_default_values (char *data, char *PartnerID) if ( paramObjVal != NULL ) { maxAddress = paramObjVal->valuestring; + syscfg_get( NULL, "dhcp_end", buf, sizeof( buf )); - if (maxAddress != NULL) + if ((maxAddress != NULL) && (strcmp(buf, maxAddress) == 0)) { set_syscfg_partner_values(maxAddress,"dhcp_end"); maxAddress = NULL; @@ -3413,7 +3418,7 @@ static void getPartnerIdWithRetry(char* buf, char* PartnerID) #if !defined (_XB6_PRODUCT_REQ_) && !defined(_HUB4_PRODUCT_REQ_) && !defined(_SR300_PRODUCT_REQ_) && !defined(_SCXF11BFL_PRODUCT_REQ_) //Partner ID is null so need to set default partner ID as "comcast" memset( PartnerID, 0, sizeof( PartnerID ) ); -#if defined (_RDK_REF_PLATFORM_) +#if defined (_RDK_REF_PLATFORM_) || defined (_PLATFORM_IPQ_) sprintf( PartnerID, "%s", "RDKM"); #else sprintf( PartnerID, "%s", "comcast" ); diff --git a/source/scripts/init/src/apply_system_defaults_helper.c b/source/scripts/init/src/apply_system_defaults_helper.c index c96eff55..9f30f623 100644 --- a/source/scripts/init/src/apply_system_defaults_helper.c +++ b/source/scripts/init/src/apply_system_defaults_helper.c @@ -763,7 +763,7 @@ int getFactoryPartnerId (char *pValue) return -1; } -static int validatePartnerId (char *PartnerID) +static int validatePartnerId (char *PartnerID, size_t partnerIdBufLen) { int result = 0; char* ptr_etc_jsons = NULL; @@ -783,7 +783,7 @@ static int validatePartnerId (char *PartnerID) else { printf("Partner ID NOT Found\n"); - sprintf(PartnerID,"%s","unknown"); + snprintf(PartnerID,partnerIdBufLen,"%s","unknown"); } cJSON_Delete(root_etc_json); } @@ -809,7 +809,7 @@ int get_PartnerID (char *PartnerID) if( ( 0 == getFactoryPartnerId( PartnerID ) ) && ( PartnerID [ 0 ] != '\0' ) ) { APPLY_PRINT("%s - PartnerID from HAL: %s\n",__FUNCTION__,PartnerID ); - validatePartnerId ( PartnerID ); + validatePartnerId ( PartnerID, PARTNER_ID_LEN ); } else { @@ -866,7 +866,7 @@ int get_PartnerID (char *PartnerID) *pos = '\0'; sprintf( PartnerID, "%s", fileContent ); APPLY_PRINT("%s - PartnerID from File: %s\n",__FUNCTION__,PartnerID ); - validatePartnerId ( PartnerID ); + validatePartnerId ( PartnerID, PARTNER_ID_LEN ); } unlink("/nvram/.partner_ID"); } @@ -1025,7 +1025,7 @@ int PartnerId_FetchWithRetry(char *PartnerID ) { memset(PartnerID, 0, PARTNER_ID_LEN); if((0 == getFactoryPartnerId(PartnerID)) && (PartnerID[0] != '\0') && - validatePartnerId(PartnerID) && (0 != strcasecmp (PartnerID, "Unknown"))) { + validatePartnerId(PartnerID, PARTNER_ID_LEN) && (0 != strcasecmp (PartnerID, "Unknown"))) { return 0; } else { @@ -1036,7 +1036,7 @@ int PartnerId_FetchWithRetry(char *PartnerID ) { strncpy(PartnerID, buf, strlen(buf)); PartnerID[strlen(buf)] = '\0'; - if(validatePartnerId(PartnerID) && (0 != strcasecmp(PartnerID, "Unknown") )) { + if(validatePartnerId(PartnerID, PARTNER_ID_LEN) && (0 != strcasecmp(PartnerID, "Unknown") )) { return 0; } } @@ -1082,7 +1082,7 @@ int WritePartnerIDToFile(char* PartnerID) { } void CheckAndHandleInvalidPartnerIDRecoveryProcess(char *PartnerID) { - if( '\0' == PartnerID[0] || (0 == validatePartnerId(PartnerID)) || (0 == strcasecmp (PartnerID, "Unknown")) ) { + if( '\0' == PartnerID[0] || (0 == validatePartnerId(PartnerID, PARTNER_ID_LEN)) || (0 == strcasecmp (PartnerID, "Unknown")) ) { memset(PartnerID, 0, PARTNER_ID_LEN); APPLY_PRINT("%s - Current PartnerID value is Unknown/Invalid, So retrying to obtain valid PartnerID values. \n", __FUNCTION__); diff --git a/source/util/utils/util.c b/source/util/utils/util.c index 379c0ed7..a185b4df 100644 --- a/source/util/utils/util.c +++ b/source/util/utils/util.c @@ -65,8 +65,9 @@ int vsystem(const char *fmt, ...) if (n < 0 || n >= sizeof(cmd)) return -1; - + #ifndef _COSA_QCA_ARM_ fprintf(stderr, "%s: %s\n", __FUNCTION__, cmd); + #endif return system(cmd); }