Clean up arch_get_xen_caps() to not use sprintf().
authorKeir Fraser <keir@xensource.com>
Tue, 30 Jan 2007 16:23:43 +0000 (16:23 +0000)
committerKeir Fraser <keir@xensource.com>
Tue, 30 Jan 2007 16:23:43 +0000 (16:23 +0000)
Based on a patch from Christoph Egger <Christoph.Egger@amd.com>
Signed-off-by: Keir Fraser <keir@xensource.com>
xen/arch/ia64/xen/xensetup.c
xen/arch/x86/setup.c

index 3692440240c0bbf9ba3930b87655d7f40a4d6b6c..2496683a5e3cc66cbe002b76f18d4f915ea53082 100644 (file)
@@ -547,18 +547,19 @@ printk("num_online_cpus=%d, max_cpus=%d\n",num_online_cpus(),max_cpus);
 
 void arch_get_xen_caps(xen_capabilities_info_t info)
 {
-    char *p=info;
     int major = xen_major_version();
     int minor = xen_minor_version();
+    char s[32];
 
-    p += snprintf(p,sizeof(info), "xen-%d.%d-ia64 ", major, minor);
+    info[0] = '\0';
 
-    if (vmx_enabled)
-        p += snprintf(p,sizeof(info) - (p - info),"hvm-%d.%d-ia64 ", major, minor);
-
-    *(p-1) = 0;
-
-    BUG_ON((p-info)>sizeof(xen_capabilities_info_t));
+    snprintf(s, sizeof(s), "xen-%d.%d-ia54 ", major, minor);
+    safe_strcat(info, s);
 
+    if (vmx_enabled)
+    {
+        snprintf(s, sizeof(s), "hvm-%d.%d-ia64 ", major, minor);
+        safe_strcat(info, s);
+    }
 }
 
index 18110c5f3cf081150fb631ed1832666b4df3a6e7..9e67c009cab9c575d6eceedc3ab7256fa443ea46 100644 (file)
@@ -802,69 +802,53 @@ void __init __start_xen(multiboot_info_t *mbi)
 
 void arch_get_xen_caps(xen_capabilities_info_t info)
 {
-    char *p = info;
-    int i = 0;
     int major = xen_major_version();
     int minor = xen_minor_version();
+    char s[32];
+
+    info[0] = '\0';
 
 #if defined(CONFIG_X86_32) && !defined(CONFIG_X86_PAE)
 
-    i = snprintf(p, sizeof(xen_capabilities_info_t),
-                 "xen-%d.%d-x86_32 ", major, minor);
-    p += i;
-    if ( hvm_enabled ) {
-        i = snprintf(p, sizeof(xen_capabilities_info_t) - i,
-               "hvm-%d.%d-x86_32 ", major, minor);
-       p += i;
+    snprintf(s, sizeof(s), "xen-%d.%d-x86_32 ", major, minor);
+    safe_strcat(info, s);
+    if ( hvm_enabled )
+    {
+        snprintf(s, sizeof(s), "hvm-%d.%d-x86_32 ", major, minor);
+        safe_strcat(info, s);
     }
 
 #elif defined(CONFIG_X86_32) && defined(CONFIG_X86_PAE)
 
-    i = snprintf(p, sizeof(xen_capabilities_info_t),
-                 "xen-%d.%d-x86_32p ", major, minor);
-    p += i;
+    snprintf(s, sizeof(s), "xen-%d.%d-x86_32p ", major, minor);
+    safe_strcat(info, s);
     if ( hvm_enabled )
     {
-        i = snprintf(p, sizeof(xen_capabilities_info_t),
-                     "hvm-%d.%d-x86_32 ", major, minor);
-        p += i;
-        i = snprintf(p, sizeof(xen_capabilities_info_t) - i,
-                     "hvm-%d.%d-x86_32p ", major, minor);
-        p += i;
+        snprintf(s, sizeof(s), "hvm-%d.%d-x86_32 ", major, minor);
+        safe_strcat(info, s);
+        snprintf(s, sizeof(s), "hvm-%d.%d-x86_32p ", major, minor);
+        safe_strcat(info, s);
     }
 
 #elif defined(CONFIG_X86_64)
 
-    i = snprintf(p, sizeof(xen_capabilities_info_t),
-                 "xen-%d.%d-x86_64 ", major, minor);
-    p += i;
+    snprintf(s, sizeof(s), "xen-%d.%d-x86_64 ", major, minor);
+    safe_strcat(info, s);
 #ifdef CONFIG_COMPAT
-    i = snprintf(p, sizeof(xen_capabilities_info_t) - i,
-                "xen-%d.%d-x86_32p ", major, minor);
-    p += i;
+    snprintf(s, sizeof(s), "xen-%d.%d-x86_32p ", major, minor);
+    safe_strcat(info, s);
 #endif
     if ( hvm_enabled )
     {
-        i = snprintf(p, sizeof(xen_capabilities_info_t) - i,
-                     "hvm-%d.%d-x86_32 ", major, minor);
-        p += i;
-        i = snprintf(p, sizeof(xen_capabilities_info_t) - i,
-                     "hvm-%d.%d-x86_32p ", major, minor);
-        p += i;
-        i = snprintf(p, sizeof(xen_capabilities_info_t) - i,
-                     "hvm-%d.%d-x86_64 ", major, minor);
-        p += i;
+        snprintf(s, sizeof(s), "hvm-%d.%d-x86_32 ", major, minor);
+        safe_strcat(info, s);
+        snprintf(s, sizeof(s), "hvm-%d.%d-x86_32p ", major, minor);
+        safe_strcat(info, s);
+        snprintf(s, sizeof(s), "hvm-%d.%d-x86_64 ", major, minor);
+        safe_strcat(info, s);
     }
 
-#else
-
-    p++;
-
 #endif
-
-    *(p-1) = 0;
-
-    BUG_ON((p - info) > sizeof(xen_capabilities_info_t));
 }
 
 /*