[Libvir] [PATCH] parsing virsh options is wrong

Saori Fukuta fukuta.saori at jp.fujitsu.com
Tue Feb 27 10:45:45 UTC 2007


Hi,

When I specified -t (or -q) option with virsh command, the result is 
something wrong.

It is likely to be caused by the way to parse the virsh options.

(example)
    I would like to know the node information with timing information.
    So, I try some cases.

    1) virsh with "-t nodeinfo"
    ran virsh interactive terminal. Hmm, I didn't expect that...
    # virsh -t nodeinfo
    Welcome to virsh, the virtualization interactive terminal.
    
    Type:  'help' for help with commands
           'quit' to quit
    
    virsh #

    2) virsh with "-t aa nodeinfo"
    I got the node information with timing information. But what does
    "aa" option mean?? (Of course no meaning.)
    # virsh -t aa nodeinfo
    CPU model:           i686
    CPU(s):              2
    CPU frequency:       1828 MHz
    CPU socket(s):       1
    Core(s) per socket:  2
    Thread(s) per core:  1
    NUMA cell(s):        1
    Memory size:         1037312 kB
    
    (Time: 2.821 ms)

    3) virsh with "-t tt nodeinfo"
    ran virsh interactive terminal. What's the difference with "aa"?
    # virsh -t tt nodeinfo
    Welcome to virsh, the virtualization interactive terminal.
    
    Type:  'help' for help with commands
           'quit' to quit
    
    virsh #

I think the cause is missing a conditional before getopt_long at
vshParseArgv and add to check whether "o->has_arg" is 1 or not.

After the fix, I can use virsh options normally.
(example)
    1) virsh with "-t nodeinfo"
    # ./virsh -t nodeinfo
    CPU model:           i686
    CPU(s):              2
    CPU frequency:       1828 MHz
    CPU socket(s):       1
    Core(s) per socket:  2
    Thread(s) per core:  1
    NUMA cell(s):        1
    Memory size:         1037312 kB
    
    (Time: 2.626 ms)

    2) virsh with "-t aa nodeinfo"
    # ./virsh -t aa nodeinfo
    error: unknown command: 'aa'

    3) virsh with "-t tt nodeinfo"
    # ./virsh -t tt nodeinfo
    error: unknown command: 'tt'

Signed-off-by: Saori Fukuta <fukuta.saori at jp.fujitsu.com>

Thanks,
Saori Fukuta.


Index: virsh.c
===================================================================
RCS file: /data/cvs/libvirt/src/virsh.c,v
retrieving revision 1.55
diff -u -p -r1.55 virsh.c
--- virsh.c     23 Feb 2007 10:27:53 -0000      1.55
+++ virsh.c     27 Feb 2007 07:35:28 -0000
@@ -3344,12 +3344,14 @@ vshParseArgv(vshControl * ctl, int argc,
                 int sz = strlen(last);

                 for (o = opt; o->name; o++) {
-                    if (sz == 2 && *(last + 1) == o->val)
-                        /* valid virsh short option */
-                        valid = TRUE;
-                    else if (sz > 2 && strcmp(o->name, last + 2) == 0)
-                        /* valid virsh long option */
-                        valid = TRUE;
+                    if (o->has_arg == 1){
+                        if (sz == 2 && *(last + 1) == o->val)
+                            /* valid virsh short option */
+                            valid = TRUE;
+                        else if (sz > 2 && strcmp(o->name, last + 2) == 0)
+                            /* valid virsh long option */
+                            valid = TRUE;
+                    }
                 }
             }
             if (!valid) {




More information about the libvir-list mailing list