[oe] [meta-openwrt][PATCH 3/9] Juci: fixed gcc 7 issue
Andreas Oberritter
obi at opendreambox.org
Mon Jul 17 08:57:18 UTC 2017
On Mon, 17 Jul 2017 10:48:05 +0800
Stanley Phoong <stanley.cheong.kwan.phoong at intel.com> wrote:
> 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.
Memory allocated by asprintf must get released manually after use.
Regards,
Andreas
>
> 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"
More information about the Openembedded-devel
mailing list