diff mbox

libxl: fix printing hotplug arguments/environment

Message ID 1470068456-15064-1-git-send-email-roger.pau@citrix.com (mailing list archive)
State New, archived
Headers show

Commit Message

Roger Pau Monné Aug. 1, 2016, 4:20 p.m. UTC
A OS could decide to not pass arguments or any environment variables to
hotplug scripts, and this will trigger a bug in device_hotplug logic, since
it expects both the argument and the environment arrays to exist. Allow
both args or env to be NULL.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
Cc: Wei Liu <wei.liu2@citrix.com>
Cc: Ian Jackson <ian.jackson@eu.citrix.com>
---
 tools/libxl/libxl_device.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Wei Liu Aug. 2, 2016, 9:13 a.m. UTC | #1
On Mon, Aug 01, 2016 at 06:20:56PM +0200, Roger Pau Monne wrote:
> A OS could decide to not pass arguments or any environment variables to

"An"

> hotplug scripts, and this will trigger a bug in device_hotplug logic, since
> it expects both the argument and the environment arrays to exist. Allow
> both args or env to be NULL.
> 
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> ---
> Cc: Wei Liu <wei.liu2@citrix.com>
> Cc: Ian Jackson <ian.jackson@eu.citrix.com>
> ---
>  tools/libxl/libxl_device.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/tools/libxl/libxl_device.c b/tools/libxl/libxl_device.c
> index b9a6df2..0e5f546 100644
> --- a/tools/libxl/libxl_device.c
> +++ b/tools/libxl/libxl_device.c
> @@ -1132,7 +1132,7 @@ static void device_hotplug(libxl__egc *egc, libxl__ao_device *aodev)
>  
>      LOG(DEBUG, "calling hotplug script: %s %s", args[0], args[1]);
>      LOG(DEBUG, "extra args:");
> -    {
> +    if ( args != NULL) {

Minor nit, extraneous space here.

Shouldn't this check be moved before the "calling hotplug script..."
line?

>          const char *arg;
>          unsigned int x;
>  
> @@ -1140,7 +1140,7 @@ static void device_hotplug(libxl__egc *egc, libxl__ao_device *aodev)
>              LOG(DEBUG, "\t%s", arg);
>      }
>      LOG(DEBUG, "env:");
> -    {
> +    if ( env != NULL) {
>          const char *k, *v;
>          unsigned int x;
>  
> -- 
> 2.7.4 (Apple Git-66)
>
Roger Pau Monné Aug. 2, 2016, 9:27 a.m. UTC | #2
On Tue, Aug 02, 2016 at 10:13:42AM +0100, Wei Liu wrote:
> On Mon, Aug 01, 2016 at 06:20:56PM +0200, Roger Pau Monne wrote:
> > A OS could decide to not pass arguments or any environment variables to
> 
> "An"
> 
> > hotplug scripts, and this will trigger a bug in device_hotplug logic, since
> > it expects both the argument and the environment arrays to exist. Allow
> > both args or env to be NULL.
> > 
> > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> > ---
> > Cc: Wei Liu <wei.liu2@citrix.com>
> > Cc: Ian Jackson <ian.jackson@eu.citrix.com>
> > ---
> >  tools/libxl/libxl_device.c | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> > 
> > diff --git a/tools/libxl/libxl_device.c b/tools/libxl/libxl_device.c
> > index b9a6df2..0e5f546 100644
> > --- a/tools/libxl/libxl_device.c
> > +++ b/tools/libxl/libxl_device.c
> > @@ -1132,7 +1132,7 @@ static void device_hotplug(libxl__egc *egc, libxl__ao_device *aodev)
> >  
> >      LOG(DEBUG, "calling hotplug script: %s %s", args[0], args[1]);
> >      LOG(DEBUG, "extra args:");
> > -    {
> > +    if ( args != NULL) {
> 
> Minor nit, extraneous space here.
> 
> Shouldn't this check be moved before the "calling hotplug script..."
> line?

This one should be removed, args cannot be NULL or else we won't call 
anything, and thus libxl__get_hotplug_script_info should return 0.
 
> >          const char *arg;
> >          unsigned int x;
> >  
> > @@ -1140,7 +1140,7 @@ static void device_hotplug(libxl__egc *egc, libxl__ao_device *aodev)
> >              LOG(DEBUG, "\t%s", arg);
> >      }
> >      LOG(DEBUG, "env:");
> > -    {
> > +    if ( env != NULL) {
> >          const char *k, *v;
> >          unsigned int x;
> >  
> > -- 
> > 2.7.4 (Apple Git-66)
> >
Wei Liu Aug. 2, 2016, 9:31 a.m. UTC | #3
On Tue, Aug 02, 2016 at 11:27:13AM +0200, Roger Pau Monne wrote:
> On Tue, Aug 02, 2016 at 10:13:42AM +0100, Wei Liu wrote:
> > On Mon, Aug 01, 2016 at 06:20:56PM +0200, Roger Pau Monne wrote:
> > > A OS could decide to not pass arguments or any environment variables to
> > 
> > "An"
> > 
> > > hotplug scripts, and this will trigger a bug in device_hotplug logic, since
> > > it expects both the argument and the environment arrays to exist. Allow
> > > both args or env to be NULL.
> > > 
> > > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> > > ---
> > > Cc: Wei Liu <wei.liu2@citrix.com>
> > > Cc: Ian Jackson <ian.jackson@eu.citrix.com>
> > > ---
> > >  tools/libxl/libxl_device.c | 4 ++--
> > >  1 file changed, 2 insertions(+), 2 deletions(-)
> > > 
> > > diff --git a/tools/libxl/libxl_device.c b/tools/libxl/libxl_device.c
> > > index b9a6df2..0e5f546 100644
> > > --- a/tools/libxl/libxl_device.c
> > > +++ b/tools/libxl/libxl_device.c
> > > @@ -1132,7 +1132,7 @@ static void device_hotplug(libxl__egc *egc, libxl__ao_device *aodev)
> > >  
> > >      LOG(DEBUG, "calling hotplug script: %s %s", args[0], args[1]);
> > >      LOG(DEBUG, "extra args:");
> > > -    {
> > > +    if ( args != NULL) {
> > 
> > Minor nit, extraneous space here.
> > 
> > Shouldn't this check be moved before the "calling hotplug script..."
> > line?
> 
> This one should be removed, args cannot be NULL or else we won't call 
> anything, and thus libxl__get_hotplug_script_info should return 0.
>  

OK, please update the patch commit message and content.

I will wait for v2.

> > >          const char *arg;
> > >          unsigned int x;
> > >  
> > > @@ -1140,7 +1140,7 @@ static void device_hotplug(libxl__egc *egc, libxl__ao_device *aodev)
> > >              LOG(DEBUG, "\t%s", arg);
> > >      }
> > >      LOG(DEBUG, "env:");
> > > -    {
> > > +    if ( env != NULL) {
> > >          const char *k, *v;
> > >          unsigned int x;
> > >  
> > > -- 
> > > 2.7.4 (Apple Git-66)
> > >
Wei Liu Aug. 2, 2016, 4:03 p.m. UTC | #4
Pushed.
diff mbox

Patch

diff --git a/tools/libxl/libxl_device.c b/tools/libxl/libxl_device.c
index b9a6df2..0e5f546 100644
--- a/tools/libxl/libxl_device.c
+++ b/tools/libxl/libxl_device.c
@@ -1132,7 +1132,7 @@  static void device_hotplug(libxl__egc *egc, libxl__ao_device *aodev)
 
     LOG(DEBUG, "calling hotplug script: %s %s", args[0], args[1]);
     LOG(DEBUG, "extra args:");
-    {
+    if ( args != NULL) {
         const char *arg;
         unsigned int x;
 
@@ -1140,7 +1140,7 @@  static void device_hotplug(libxl__egc *egc, libxl__ao_device *aodev)
             LOG(DEBUG, "\t%s", arg);
     }
     LOG(DEBUG, "env:");
-    {
+    if ( env != NULL) {
         const char *k, *v;
         unsigned int x;