All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chen Gang <gang.chen.5i5j@gmail.com>
To: Alexander Graf <agraf@suse.de>, pbonzini@redhat.com
Cc: qemu-trivial@nongnu.org, qemu-ppc@nongnu.org,
	qemu-devel <qemu-devel@nongnu.org>,
	kvm@vger.kernel.org
Subject: Re: [Qemu-trivial] [PATCH] target-ppc: kvm: Fix memory overflow issue about strncat()
Date: Mon, 13 Oct 2014 23:43:43 +0800	[thread overview]
Message-ID: <543BF32F.4020205@gmail.com> (raw)
In-Reply-To: <543BE616.1000707@suse.de>

On 10/13/14 22:47, Alexander Graf wrote:
> 
> Could you please instead rewrite it to use g_strdup_printf() rather than
> strncat()s? That way we resolve all string pitfalls automatically - and
> this code is not the fast path, so doing an extra memory allocation is ok.
>

I guess, it is a personal taste. For me, it may need additional variable
for g_strdup_printf(), and not save code lines, but *sprintf() is more
readable than str*cat().

The related code may like below (welcome any improvement for it):

diff --git a/target-ppc/kvm.c b/target-ppc/kvm.c
index 66e7ce5..cea6a87 100644
--- a/target-ppc/kvm.c
+++ b/target-ppc/kvm.c
@@ -1782,7 +1782,7 @@ static int kvmppc_find_cpu_dt(char *buf, int buf_len)
  * format) */
 static uint64_t kvmppc_read_int_cpu_dt(const char *propname)
 {
-    char buf[PATH_MAX];
+    char buf[PATH_MAX], *tmp;
     union {
         uint32_t v32;
         uint64_t v64;
@@ -1794,10 +1794,10 @@ static uint64_t kvmppc_read_int_cpu_dt(const char *propname)
         return -1;
     }
 
-    strncat(buf, "/", sizeof(buf) - strlen(buf) - 1);
-    strncat(buf, propname, sizeof(buf) - strlen(buf) - 1);
+    tmp = g_strdup_printf("%s/%s", buf, propname);
 
-    f = fopen(buf, "rb");
+    f = fopen(tmp, "rb");
+    g_free(buf);
     if (!f) {
         return -1;
     }

For me, it is really a personal taste, so if the maintainer feels the
diff above is OK, I shall send patch v2 for it within 2 days.


Thanks.
-- 
Chen Gang

Open, share, and attitude like air, water, and life which God blessed


WARNING: multiple messages have this Message-ID (diff)
From: Chen Gang <gang.chen.5i5j@gmail.com>
To: Alexander Graf <agraf@suse.de>, pbonzini@redhat.com
Cc: qemu-ppc@nongnu.org, kvm@vger.kernel.org,
	qemu-devel <qemu-devel@nongnu.org>,
	qemu-trivial@nongnu.org
Subject: Re: [PATCH] target-ppc: kvm: Fix memory overflow issue about strncat()
Date: Mon, 13 Oct 2014 23:43:43 +0800	[thread overview]
Message-ID: <543BF32F.4020205@gmail.com> (raw)
In-Reply-To: <543BE616.1000707@suse.de>

On 10/13/14 22:47, Alexander Graf wrote:
> 
> Could you please instead rewrite it to use g_strdup_printf() rather than
> strncat()s? That way we resolve all string pitfalls automatically - and
> this code is not the fast path, so doing an extra memory allocation is ok.
>

I guess, it is a personal taste. For me, it may need additional variable
for g_strdup_printf(), and not save code lines, but *sprintf() is more
readable than str*cat().

The related code may like below (welcome any improvement for it):

diff --git a/target-ppc/kvm.c b/target-ppc/kvm.c
index 66e7ce5..cea6a87 100644
--- a/target-ppc/kvm.c
+++ b/target-ppc/kvm.c
@@ -1782,7 +1782,7 @@ static int kvmppc_find_cpu_dt(char *buf, int buf_len)
  * format) */
 static uint64_t kvmppc_read_int_cpu_dt(const char *propname)
 {
-    char buf[PATH_MAX];
+    char buf[PATH_MAX], *tmp;
     union {
         uint32_t v32;
         uint64_t v64;
@@ -1794,10 +1794,10 @@ static uint64_t kvmppc_read_int_cpu_dt(const char *propname)
         return -1;
     }
 
-    strncat(buf, "/", sizeof(buf) - strlen(buf) - 1);
-    strncat(buf, propname, sizeof(buf) - strlen(buf) - 1);
+    tmp = g_strdup_printf("%s/%s", buf, propname);
 
-    f = fopen(buf, "rb");
+    f = fopen(tmp, "rb");
+    g_free(buf);
     if (!f) {
         return -1;
     }

For me, it is really a personal taste, so if the maintainer feels the
diff above is OK, I shall send patch v2 for it within 2 days.


Thanks.
-- 
Chen Gang

Open, share, and attitude like air, water, and life which God blessed

WARNING: multiple messages have this Message-ID (diff)
From: Chen Gang <gang.chen.5i5j@gmail.com>
To: Alexander Graf <agraf@suse.de>, pbonzini@redhat.com
Cc: qemu-trivial@nongnu.org, qemu-ppc@nongnu.org,
	qemu-devel <qemu-devel@nongnu.org>,
	kvm@vger.kernel.org
Subject: Re: [Qemu-devel] [PATCH] target-ppc: kvm: Fix memory overflow issue about strncat()
Date: Mon, 13 Oct 2014 23:43:43 +0800	[thread overview]
Message-ID: <543BF32F.4020205@gmail.com> (raw)
In-Reply-To: <543BE616.1000707@suse.de>

On 10/13/14 22:47, Alexander Graf wrote:
> 
> Could you please instead rewrite it to use g_strdup_printf() rather than
> strncat()s? That way we resolve all string pitfalls automatically - and
> this code is not the fast path, so doing an extra memory allocation is ok.
>

I guess, it is a personal taste. For me, it may need additional variable
for g_strdup_printf(), and not save code lines, but *sprintf() is more
readable than str*cat().

The related code may like below (welcome any improvement for it):

diff --git a/target-ppc/kvm.c b/target-ppc/kvm.c
index 66e7ce5..cea6a87 100644
--- a/target-ppc/kvm.c
+++ b/target-ppc/kvm.c
@@ -1782,7 +1782,7 @@ static int kvmppc_find_cpu_dt(char *buf, int buf_len)
  * format) */
 static uint64_t kvmppc_read_int_cpu_dt(const char *propname)
 {
-    char buf[PATH_MAX];
+    char buf[PATH_MAX], *tmp;
     union {
         uint32_t v32;
         uint64_t v64;
@@ -1794,10 +1794,10 @@ static uint64_t kvmppc_read_int_cpu_dt(const char *propname)
         return -1;
     }
 
-    strncat(buf, "/", sizeof(buf) - strlen(buf) - 1);
-    strncat(buf, propname, sizeof(buf) - strlen(buf) - 1);
+    tmp = g_strdup_printf("%s/%s", buf, propname);
 
-    f = fopen(buf, "rb");
+    f = fopen(tmp, "rb");
+    g_free(buf);
     if (!f) {
         return -1;
     }

For me, it is really a personal taste, so if the maintainer feels the
diff above is OK, I shall send patch v2 for it within 2 days.


Thanks.
-- 
Chen Gang

Open, share, and attitude like air, water, and life which God blessed

  reply	other threads:[~2014-10-13 15:46 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-13 14:36 [Qemu-trivial] [PATCH] target-ppc: kvm: Fix memory overflow issue about strncat() Chen Gang
2014-10-13 14:36 ` [Qemu-devel] " Chen Gang
2014-10-13 14:36 ` Chen Gang
2014-10-13 14:47 ` [Qemu-trivial] " Alexander Graf
2014-10-13 14:47   ` [Qemu-devel] " Alexander Graf
2014-10-13 14:47   ` Alexander Graf
2014-10-13 15:43   ` Chen Gang [this message]
2014-10-13 15:43     ` [Qemu-devel] " Chen Gang
2014-10-13 15:43     ` Chen Gang
2014-10-24  7:49   ` [Qemu-trivial] " Michael Tokarev
2014-10-24  7:49     ` [Qemu-devel] " Michael Tokarev
2014-10-24  8:05     ` Alexander Graf
2014-10-24  8:05       ` [Qemu-devel] " Alexander Graf
2014-10-24  8:05       ` Alexander Graf
2014-10-24  8:19     ` Chen Gang
2014-10-24  8:19       ` [Qemu-devel] " Chen Gang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=543BF32F.4020205@gmail.com \
    --to=gang.chen.5i5j@gmail.com \
    --cc=agraf@suse.de \
    --cc=kvm@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    --cc=qemu-trivial@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.