]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
maint: Kill usage of atoi()
authorPeter Krempa <pkrempa@redhat.com>
Thu, 14 Nov 2013 16:14:26 +0000 (17:14 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Wed, 4 Dec 2013 17:56:06 +0000 (18:56 +0100)
Kill the use of atoi() and introduce syntax check to forbid it and it's
friends (atol, atoll, atof, atoq).

Also fix a typo in variable name holding the cylinders count of a disk
pool (apparently unused).

examples/domsuspend/suspend.c will need a larger scale refactor as the
whole example file is broken thus it will be exempted from the syntax
check for now.

cfg.mk
src/conf/storage_conf.h
src/storage/storage_backend_disk.c
src/xen/xend_internal.c

diff --git a/cfg.mk b/cfg.mk
index bd3dd4848c5e7c89dffdaccc4f53f2930350bad3..0c57022ff34dbb75b543004cb1fe1edafe9d5e89 100644 (file)
--- a/cfg.mk
+++ b/cfg.mk
@@ -869,6 +869,12 @@ sc_prohibit_getenv:
        halt='Use virGetEnv{Allow,Block}SUID instead of getenv'         \
          $(_sc_search_regexp)
 
+sc_prohibit_atoi:
+       @prohibit='\bato(i|f|l|ll|q) *\('       \
+       halt='Use virStrToLong* instead of atoi, atol, atof, atoq, atoll' \
+         $(_sc_search_regexp)
+
+
 # We don't use this feature of maint.mk.
 prev_version_file = /dev/null
 
index f8a7eec140f0b422bc5397004cc3b9a52d7a1eaf..485bdba137ed335bfa5d92cfe0b962cdc30846f8 100644 (file)
@@ -229,7 +229,7 @@ struct _virStoragePoolSourceDevice {
      * the geometry data is needed
      */
     struct _geometry {
-        int cyliders;
+        int cylinders;
         int heads;
         int sectors;
     } geometry;
index 4e53ec5e603a85be007df9b82e5206ff50fb900f..a7a7d0ec0d1450f3cb634d2fe67684d88479d27b 100644 (file)
@@ -280,12 +280,16 @@ virStorageBackendDiskMakePoolGeometry(virStoragePoolObjPtr pool,
                                       char **const groups,
                                       void *data ATTRIBUTE_UNUSED)
 {
+    virStoragePoolSourceDevicePtr device = &(pool->def->source.devices[0]);
+    if (virStrToLong_i(groups[0], NULL, 0, &device->geometry.cylinders) < 0 ||
+        virStrToLong_i(groups[1], NULL, 0, &device->geometry.heads) < 0 ||
+        virStrToLong_i(groups[2], NULL, 0, &device->geometry.sectors) < 0) {
+        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+                       _("Failed to create disk pool geometry"));
+        return -1;
+    }
 
-       pool->def->source.devices[0].geometry.cyliders = atoi(groups[0]);
-       pool->def->source.devices[0].geometry.heads = atoi(groups[1]);
-       pool->def->source.devices[0].geometry.sectors = atoi(groups[2]);
-
-       return 0;
+    return 0;
 }
 
 static int
index dac9a79f55d744536285ee9722812338771041ef..87e77a6b0cc7a643697081fbdea58faa19d691d2 100644 (file)
@@ -290,10 +290,19 @@ xend_req(int fd, char **content)
         if (STREQ(buffer, "\r\n"))
             break;
 
-        if (istartswith(buffer, "Content-Length: "))
-            content_length = atoi(buffer + 16);
-        else if (istartswith(buffer, "HTTP/1.1 "))
-            retcode = atoi(buffer + 9);
+        if (istartswith(buffer, "Content-Length: ")) {
+            if (virStrToLong_i(buffer + 16, NULL, 10, &content_length) < 0) {
+                virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+                               _("failed to parse Xend response content length"));
+                return -1;
+            }
+        } else if (istartswith(buffer, "HTTP/1.1 ")) {
+            if (virStrToLong_i(buffer + 9, NULL, 10, &retcode) < 0) {
+                virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+                               _("failed to parse Xend response return code"));
+                return -1;
+            }
+        }
     }
 
     VIR_FREE(buffer);