diff mbox

[1/2] block/nfs: fix NULL pointer dereference in URI parsing

Message ID 1484905570-10520-2-git-send-email-pl@kamp.de
State New
Headers show

Commit Message

Peter Lieven Jan. 20, 2017, 9:46 a.m. UTC
parse_uint_full wants to put the parsed value into the
variabled passed via its second argument which is NULL.

Fixes: 94d6a7a76e9df9919629428f6c598e2b97d9426c
Cc: qemu-stable@nongnu.org
Signed-off-by: Peter Lieven <pl@kamp.de>
---
 block/nfs.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Eric Blake Jan. 20, 2017, 3:29 p.m. UTC | #1
On 01/20/2017 03:46 AM, Peter Lieven wrote:
> parse_uint_full wants to put the parsed value into the
> variabled passed via its second argument which is NULL.

s/variabled/variable/

> 
> Fixes: 94d6a7a76e9df9919629428f6c598e2b97d9426c
> Cc: qemu-stable@nongnu.org
> Signed-off-by: Peter Lieven <pl@kamp.de>
> ---
>  block/nfs.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/block/nfs.c b/block/nfs.c
> index a564340..baaecff 100644
> --- a/block/nfs.c
> +++ b/block/nfs.c
> @@ -108,12 +108,13 @@ static int nfs_parse_uri(const char *filename, QDict *options, Error **errp)
>      qdict_put(options, "path", qstring_from_str(uri->path));
>  
>      for (i = 0; i < qp->n; i++) {
> +        unsigned long long val;
>          if (!qp->p[i].value) {
>              error_setg(errp, "Value for NFS parameter expected: %s",
>                         qp->p[i].name);
>              goto out;
>          }
> -        if (parse_uint_full(qp->p[i].value, NULL, 0)) {
> +        if (parse_uint_full(qp->p[i].value, &val, 0)) {

Reviewed-by: Eric Blake <eblake@redhat.com>

>              error_setg(errp, "Illegal value for NFS parameter: %s",

Not your fault, but I'm always wary of "Illegal" in an error message -
the user isn't breaking any laws :)  Better is "Invalid", but such a
cleanup can be a separate tree-wide patch for qemu-trivial, if someone
wants it.
diff mbox

Patch

diff --git a/block/nfs.c b/block/nfs.c
index a564340..baaecff 100644
--- a/block/nfs.c
+++ b/block/nfs.c
@@ -108,12 +108,13 @@  static int nfs_parse_uri(const char *filename, QDict *options, Error **errp)
     qdict_put(options, "path", qstring_from_str(uri->path));
 
     for (i = 0; i < qp->n; i++) {
+        unsigned long long val;
         if (!qp->p[i].value) {
             error_setg(errp, "Value for NFS parameter expected: %s",
                        qp->p[i].name);
             goto out;
         }
-        if (parse_uint_full(qp->p[i].value, NULL, 0)) {
+        if (parse_uint_full(qp->p[i].value, &val, 0)) {
             error_setg(errp, "Illegal value for NFS parameter: %s",
                        qp->p[i].name);
             goto out;