Re: [PATCH] util: Prevent a NULl pointer from being accessed

2020-02-12 Thread Peter Krempa
On Wed, Feb 12, 2020 at 22:10:20 +0800, Yi Wang wrote:
> From: Huang Zijiang 
> 
> virJSONValueObjectGetObject maybe return NULL if the key is
> missing or if value is not the correct TYPE, so we have to prevent
> a NULl pointer from being accessed.
> 
> Signed-off-by: Huang Zijiang 
> Signed-off-by: Yi Wang 
> ---
>  src/util/virstoragefile.c | 5 +
>  1 file changed, 5 insertions(+)
> 
> diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
> index e46ac99..53224b5 100644
> --- a/src/util/virstoragefile.c
> +++ b/src/util/virstoragefile.c
> @@ -3378,6 +3378,11 @@ 
> virStorageSourceParseBackingJSONSheepdog(virStorageSourcePtr src,
>  const char *filename;
>  const char *vdi = virJSONValueObjectGetString(json, "vdi");
>  virJSONValuePtr server = virJSONValueObjectGetObject(json, "server");
> +if (!server) {
> +virReportError(VIR_ERR_INVALID_ARG, "%s",
> +_("missing server in JSON backing volume 
> definition"));
> + return -1;
> +}

Server is passed only to virStorageSourceParseBackingJSONSocketAddress
as the '@json' variable where it's checked and the same error is
actually reported, so it's not needed to check it here.


signature.asc
Description: PGP signature


Re: [PATCH] util: Prevent a NULl pointer from being accessed

2020-02-12 Thread Peter Krempa
On Wed, Feb 12, 2020 at 22:10:42 +0800, Yi Wang wrote:
> From: Huang Zijiang 
> 
> virJSONValueObjectGetObject maybe return NULL if the key is
> missing or if value is not the correct TYPE, so we have to prevent
> a NULl pointer from being accessed.
> 
> Signed-off-by: Huang Zijiang 
> Signed-off-by: Yi Wang 
> ---
>  src/util/virqemu.c | 5 +
>  1 file changed, 5 insertions(+)
> 
> diff --git a/src/util/virqemu.c b/src/util/virqemu.c
> index f3a233a..29fbe4e 100644
> --- a/src/util/virqemu.c
> +++ b/src/util/virqemu.c
> @@ -257,6 +257,11 @@ virQEMUBuildObjectCommandlineFromJSON(virBufferPtr buf,
>  const char *type = virJSONValueObjectGetString(objprops, "qom-type");
>  const char *alias = virJSONValueObjectGetString(objprops, "id");
>  virJSONValuePtr props = virJSONValueObjectGetObject(objprops, "props");
> +if (!props) {
> +virReportError(VIR_ERR_INVALID_ARG, "%s",
> +   _("reply was missing return props data"));

This error message is misleading. There's no reply, but rather this is
an internally generated JSON struct

> +return -1;
> +}
>  
>  return virQEMUBuildObjectCommandlineFromJSONInternal(buf, type, alias, 
> props);

This function checks 'props' internally.

What is this patch supposed to fix?



[PATCH] util: Prevent a NULl pointer from being accessed

2020-02-12 Thread Yi Wang
From: Huang Zijiang 

virJSONValueObjectGetObject maybe return NULL if the key is
missing or if value is not the correct TYPE, so we have to prevent
a NULl pointer from being accessed.

Signed-off-by: Huang Zijiang 
Signed-off-by: Yi Wang 
---
 src/util/virqemu.c | 5 +
 1 file changed, 5 insertions(+)

diff --git a/src/util/virqemu.c b/src/util/virqemu.c
index f3a233a..29fbe4e 100644
--- a/src/util/virqemu.c
+++ b/src/util/virqemu.c
@@ -257,6 +257,11 @@ virQEMUBuildObjectCommandlineFromJSON(virBufferPtr buf,
 const char *type = virJSONValueObjectGetString(objprops, "qom-type");
 const char *alias = virJSONValueObjectGetString(objprops, "id");
 virJSONValuePtr props = virJSONValueObjectGetObject(objprops, "props");
+if (!props) {
+virReportError(VIR_ERR_INVALID_ARG, "%s",
+   _("reply was missing return props data"));
+return -1;
+}
 
 return virQEMUBuildObjectCommandlineFromJSONInternal(buf, type, alias, 
props);
 }
-- 
1.9.1