From 4eafdea241c347106fe815fa8f608a4c403f67d0 Mon Sep 17 00:00:00 2001
From: Esben Haabendal <esben.haabendal@huawei.com>
Date: Tue, 5 Jul 2022 11:36:37 +0200
Subject: [PATCH] openharmony-standard: appspawn bugfixes

Signed-off-by: Esben Haabendal <esben.haabendal@huawei.com>
---
 ...rd-app-spawn-server-override-007-fix.patch | 27 +++++++++++++++++++
 ...ndard-setprocessname-buffer-overflow.patch | 25 +++++++++++++++++
 ...rd-app-spawn-server-override-007-fix.patch | 27 +++++++++++++++++++
 ...ndard-setprocessname-buffer-overflow.patch | 25 +++++++++++++++++
 .../openharmony/openharmony-standard_3.0.bb   |  2 ++
 .../openharmony/openharmony-standard_3.1.bb   |  2 ++
 6 files changed, 108 insertions(+)
 create mode 100644 recipes-openharmony/openharmony/openharmony-standard-3.0/base_startup_appspawn_standard-app-spawn-server-override-007-fix.patch
 create mode 100644 recipes-openharmony/openharmony/openharmony-standard-3.0/base_startup_appspawn_standard-setprocessname-buffer-overflow.patch
 create mode 100644 recipes-openharmony/openharmony/openharmony-standard-3.1/base_startup_appspawn_standard-app-spawn-server-override-007-fix.patch
 create mode 100644 recipes-openharmony/openharmony/openharmony-standard-3.1/base_startup_appspawn_standard-setprocessname-buffer-overflow.patch

diff --git a/recipes-openharmony/openharmony/openharmony-standard-3.0/base_startup_appspawn_standard-app-spawn-server-override-007-fix.patch b/recipes-openharmony/openharmony/openharmony-standard-3.0/base_startup_appspawn_standard-app-spawn-server-override-007-fix.patch
new file mode 100644
index 0000000..77d632e
--- /dev/null
+++ b/recipes-openharmony/openharmony/openharmony-standard-3.0/base_startup_appspawn_standard-app-spawn-server-override-007-fix.patch
@@ -0,0 +1,27 @@
+# SPDX-FileCopyrightText: Huawei Inc.
+#
+# SPDX-License-Identifier: Apache-2.0
+
+Patch for //base/startup/appspawn_standard repository of OpenHarmony 3.0 codebase.
+
+Fix App_Spawn_Server_Override_007 test.
+
+Signed-off-by: Esben Haabendal <esben.haabendal@huawei.com>
+Upstream-Status: Pending
+
+diff --git a/test/unittest/app_spawn_server_test/app_spawn_server_override_test.cpp b/test/unittest/app_spawn_server_test/app_spawn_server_override_test.cpp
+index 8956e0c272b9..516ca82a8ef6 100644
+--- a/test/unittest/app_spawn_server_test/app_spawn_server_override_test.cpp
++++ b/test/unittest/app_spawn_server_test/app_spawn_server_override_test.cpp
+@@ -208,8 +208,9 @@ HWTEST_F(AppSpawnServerOverrideTest, App_Spawn_Server_Override_007, TestSize.Lev
+ {
+     GTEST_LOG_(INFO) << "App_Spawn_Server_Override_007 start";
+ 
+-    char longProcName[20] = "longProcName";
+-    int64_t longProcNameLen = strlen(longProcName);
++    char longProcName[22] = "longProcName";
++    // longProcName array must be large enough to hold processName set below
++    int64_t longProcNameLen = sizeof(longProcName);
+     char processName[32] = "processName0123456789";
+     int32_t len = sizeof(processName);
+ 
diff --git a/recipes-openharmony/openharmony/openharmony-standard-3.0/base_startup_appspawn_standard-setprocessname-buffer-overflow.patch b/recipes-openharmony/openharmony/openharmony-standard-3.0/base_startup_appspawn_standard-setprocessname-buffer-overflow.patch
new file mode 100644
index 0000000..2c45a34
--- /dev/null
+++ b/recipes-openharmony/openharmony/openharmony-standard-3.0/base_startup_appspawn_standard-setprocessname-buffer-overflow.patch
@@ -0,0 +1,25 @@
+# SPDX-FileCopyrightText: Huawei Inc.
+#
+# SPDX-License-Identifier: Apache-2.0
+
+Patch for //base/startup/appspawn_standard repository of OpenHarmony 3.0 codebase.
+
+Prevent buffer overflow error in AppSpawn::SetProcessName() when processName is
+longer than longProcNameLen - 1.
+
+Signed-off-by: Esben Haabendal <esben.haabendal@huawei.com>
+Upstream-Status: Pending
+
+diff --git a/src/appspawn_server.cpp b/src/appspawn_server.cpp
+index 9e238409ad41..ea539e5b5b2a 100644
+--- a/src/appspawn_server.cpp
++++ b/src/appspawn_server.cpp
+@@ -267,7 +267,7 @@ int32_t AppSpawnServer::SetProcessName(
+     }
+ 
+     // set long process name
+-    if (strncpy_s(longProcName, len, processName, len) != EOK) {
++    if (strncpy_s(longProcName, longProcNameLen, processName, len) != EOK) {
+         HiLog::Error(LABEL, "strncpy_s long name error: %{public}d", strerror_r(errno, err_string, ERR_STRING_SZ));
+         return -EINVAL;
+     }
diff --git a/recipes-openharmony/openharmony/openharmony-standard-3.1/base_startup_appspawn_standard-app-spawn-server-override-007-fix.patch b/recipes-openharmony/openharmony/openharmony-standard-3.1/base_startup_appspawn_standard-app-spawn-server-override-007-fix.patch
new file mode 100644
index 0000000..6b45e4f
--- /dev/null
+++ b/recipes-openharmony/openharmony/openharmony-standard-3.1/base_startup_appspawn_standard-app-spawn-server-override-007-fix.patch
@@ -0,0 +1,27 @@
+# SPDX-FileCopyrightText: Huawei Inc.
+#
+# SPDX-License-Identifier: Apache-2.0
+
+Patch for //base/startup/appspawn_standard repository of OpenHarmony 3.1 codebase.
+
+Fix App_Spawn_Server_Override_007 test.
+
+Signed-off-by: Esben Haabendal <esben.haabendal@huawei.com>
+Upstream-Status: Pending
+
+diff --git a/test/unittest/app_spawn_server_test/app_spawn_server_override_test.cpp b/test/unittest/app_spawn_server_test/app_spawn_server_override_test.cpp
+index 8956e0c272b9..516ca82a8ef6 100644
+--- a/test/unittest/app_spawn_server_test/app_spawn_server_override_test.cpp
++++ b/test/unittest/app_spawn_server_test/app_spawn_server_override_test.cpp
+@@ -208,8 +208,9 @@ HWTEST_F(AppSpawnServerOverrideTest, App_Spawn_Server_Override_007, TestSize.Lev
+ {
+     GTEST_LOG_(INFO) << "App_Spawn_Server_Override_007 start";
+ 
+-    char longProcName[20] = "longProcName";
+-    int64_t longProcNameLen = strlen(longProcName);
++    char longProcName[22] = "longProcName";
++    // longProcName array must be large enough to hold processName set below
++    int64_t longProcNameLen = sizeof(longProcName);
+     char processName[32] = "processName0123456789";
+     int32_t len = sizeof(processName);
+ 
diff --git a/recipes-openharmony/openharmony/openharmony-standard-3.1/base_startup_appspawn_standard-setprocessname-buffer-overflow.patch b/recipes-openharmony/openharmony/openharmony-standard-3.1/base_startup_appspawn_standard-setprocessname-buffer-overflow.patch
new file mode 100644
index 0000000..0d5b791
--- /dev/null
+++ b/recipes-openharmony/openharmony/openharmony-standard-3.1/base_startup_appspawn_standard-setprocessname-buffer-overflow.patch
@@ -0,0 +1,25 @@
+# SPDX-FileCopyrightText: Huawei Inc.
+#
+# SPDX-License-Identifier: Apache-2.0
+
+Patch for //base/startup/appspawn_standard repository of OpenHarmony 3.1 codebase.
+
+Prevent buffer overflow error in AppSpawn::SetProcessName() when processName is
+longer than longProcNameLen - 1.
+
+Signed-off-by: Esben Haabendal <esben.haabendal@huawei.com>
+Upstream-Status: Pending
+
+diff --git a/src/appspawn_server.cpp b/src/appspawn_server.cpp
+index 54f66450b81e..707aed8c924e 100644
+--- a/src/appspawn_server.cpp
++++ b/src/appspawn_server.cpp
+@@ -514,7 +514,7 @@ int32_t AppSpawnServer::SetProcessName(
+     }
+ 
+     // set long process name
+-    if (strncpy_s(longProcName, len, processName, len) != EOK) {
++    if (strncpy_s(longProcName, longProcNameLen, processName, len) != EOK) {
+         HiLog::Error(LABEL, "strncpy_s long name error: %{public}d", errno);
+         return -EINVAL;
+     }
diff --git a/recipes-openharmony/openharmony/openharmony-standard_3.0.bb b/recipes-openharmony/openharmony/openharmony-standard_3.0.bb
index 5c51b25..6b0d720 100644
--- a/recipes-openharmony/openharmony/openharmony-standard_3.0.bb
+++ b/recipes-openharmony/openharmony/openharmony-standard_3.0.bb
@@ -50,6 +50,8 @@ SRC_URI += "file://xf86drm.c-Add-drmWaitVBlank-hack.patch;patchdir=${S}/third_pa
 SRC_URI += "file://graphic-standard-Add-missing-entry-for-libwms_client.patch;patchdir=${S}/foundation/graphic/standard"
 
 SRC_URI += "file://appspawn-procps.patch;patchdir=${S}/base/startup/appspawn_standard"
+SRC_URI += "file://base_startup_appspawn_standard-app-spawn-server-override-007-fix.patch;patchdir=${S}/base/startup/appspawn_standard"
+SRC_URI += "file://base_startup_appspawn_standard-setprocessname-buffer-overflow.patch;patchdir=${S}/base/startup/appspawn_standard"
 
 inherit python3native gn_base ptest
 
diff --git a/recipes-openharmony/openharmony/openharmony-standard_3.1.bb b/recipes-openharmony/openharmony/openharmony-standard_3.1.bb
index 3756a8c..726dc70 100644
--- a/recipes-openharmony/openharmony/openharmony-standard_3.1.bb
+++ b/recipes-openharmony/openharmony/openharmony-standard_3.1.bb
@@ -74,6 +74,8 @@ SRC_URI += "file://foundation_distributedschedule_safwk-slash-system-symlink.pat
 SRC_URI += "file://foundation_distributedschedule_samgr-slash-system-symlink.patch;patchdir=${S}/foundation/distributedschedule/samgr"
 
 SRC_URI += "file://appspawn-procps.patch;patchdir=${S}/base/startup/appspawn_standard"
+SRC_URI += "file://base_startup_appspawn_standard-app-spawn-server-override-007-fix.patch;patchdir=${S}/base/startup/appspawn_standard"
+SRC_URI += "file://base_startup_appspawn_standard-setprocessname-buffer-overflow.patch;patchdir=${S}/base/startup/appspawn_standard"
 
 # Workaround for problem with nodejs 17:
 # error:0308010C:digital envelope routines::unsupported
-- 
GitLab