ifcpu64: fix handing with less than three arguments
authorH. Peter Anvin <hpa@zytor.com>
Mon, 16 Feb 2009 00:32:12 +0000 (16:32 -0800)
committerH. Peter Anvin <hpa@zytor.com>
Mon, 16 Feb 2009 00:34:33 +0000 (16:34 -0800)
Due to a silly coding error, when passed with only two arguments we
would use them in order 1 -- 2 -- 1 instead of 1 -- 2 -- 2 as was
intended.  Fix.

Reported-by: Luciano Miguel Ferreira Rocha <strange@nsk.no-ip.org>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
com32/modules/ifcpu64.c

index 7d4581d..c597919 100644 (file)
@@ -101,9 +101,7 @@ int main(int argc, char *argv[])
   int i;
   int n;
 
-  for (i = 0; i < 3; i++)
-    args[i] = &argv[1];
-
+  args[0] = &argv[1];
   n = 1;
   for (i = 1; i < argc; i++) {
     if (!strcmp(argv[i], "--")) {
@@ -113,6 +111,10 @@ int main(int argc, char *argv[])
     if (n >= 3)
       break;
   }
+  while (n < 3) {
+    args[n] = args[n-1];
+    n++;
+  }
 
   boot_args(cpu_has_feature(X86_FEATURE_LM)  ? args[0] :
            cpu_has_feature(X86_FEATURE_PAE) ? args[1] :