[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