[oe] [meta-openwrt][PATCH 3/9] Juci: fixed gcc 7 issue
Stanley Phoong
stanley.cheong.kwan.phoong at intel.com
Mon Jul 17 02:48:05 UTC 2017
From: "Stanley Cheong Kwan, Phoong" <stanley.cheong.kwan.phoong at intel.com>
Jucid had issues with the snprint:
'snprintf' output 2 or more bytes (assuming 257) into a destination of
size 255
Replaced snprintf with anprintf with pointer rather than a fixed array
length.
Signed-off-by: Stanley Cheong Kwan, Phoong <stanley.cheong.kwan.phoong at intel.com>
---
recipes-core/juci/jucid/0001-gcc7-fix-jucid.patch | 41 +++++++++++++++++++++++
recipes-core/juci/jucid_git.bb | 1 +
2 files changed, 42 insertions(+)
create mode 100644 recipes-core/juci/jucid/0001-gcc7-fix-jucid.patch
diff --git a/recipes-core/juci/jucid/0001-gcc7-fix-jucid.patch b/recipes-core/juci/jucid/0001-gcc7-fix-jucid.patch
new file mode 100644
index 0000000..bae5b31
--- /dev/null
+++ b/recipes-core/juci/jucid/0001-gcc7-fix-jucid.patch
@@ -0,0 +1,41 @@
+Index: git/src/juci.c
+===================================================================
+--- git.orig/src/juci.c
++++ git/src/juci.c
+@@ -14,7 +14,7 @@
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+ */
+-
++#define _GNU_SOURCE
+ #include <stdio.h>
+ #include <unistd.h>
+ #include <dirent.h>
+@@ -57,11 +57,11 @@ int juci_load_plugins(struct juci *self,
+ return -ENOENT;
+ }
+ struct dirent *ent = 0;
+- char fname[255];
++ char *fname;
+ while((ent = readdir(dir))){
+ if(strcmp(ent->d_name, ".") == 0 || strcmp(ent->d_name, "..") == 0) continue;
+
+- snprintf(fname, sizeof(fname), "%s/%s", path, ent->d_name);
++ asprintf(&fname, "%s/%s", path, ent->d_name);
+
+ if(ent->d_type == DT_DIR) {
+ rv |= juci_load_plugins(self, fname, base_path);
+@@ -262,11 +262,11 @@ static bool _try_auth(const char *sha1ha
+
+ int _load_session_acls(struct juci_session *ses, const char *pat){
+ glob_t glob_result;
+- char path[255];
++ char *path;
+ char *dir = getenv("JUCI_ACL_DIR_PATH");
+ if(!dir) dir = JUCI_ACL_DIR_PATH;
+ DEBUG("loading acls from %s/%s.acl\n", dir, pat);
+- snprintf(path, sizeof(path), "%s/%s.acl", dir, pat);
++ asprintf(&path, "%s/%s.acl", dir, pat);
+ glob(path, GLOB_TILDE, NULL, &glob_result);
+ for(unsigned int i=0;i<glob_result.gl_pathc;++i){
+ char *text = _load_file(glob_result.gl_pathv[i]);
diff --git a/recipes-core/juci/jucid_git.bb b/recipes-core/juci/jucid_git.bb
index 85df80d..030b32e 100644
--- a/recipes-core/juci/jucid_git.bb
+++ b/recipes-core/juci/jucid_git.bb
@@ -13,6 +13,7 @@ SRC_URI = "git://github.com/mkschreder/jucid \
file://0001-juci_ws_server.c-ubus_srv_ws_client_new-expects-no-p.patch \
file://0001-main.c-define-_DEFAULT_SOURCE.patch \
file://0002-fix-makefile-in.patch \
+ file://0001-gcc7-fix-jucid.patch \
"
S = "${WORKDIR}/git"
--
2.7.4
More information about the Openembedded-devel
mailing list