]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
scratchtool.c: fix resource leak
authorDanny Al-Gaaf <danny.al-gaaf@bisect.de>
Thu, 26 Jun 2014 00:46:30 +0000 (02:46 +0200)
committerDanny Al-Gaaf <danny.al-gaaf@bisect.de>
Thu, 26 Jun 2014 00:50:29 +0000 (02:50 +0200)
CID 1219612 (#1 - 3): Resource leak (RESOURCE_LEAK)
 leaked_storage: Variable iter going out of scope leaks the
 storage it points to.

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
src/tools/scratchtool.c

index eecafb4e3058e6f945a760f81ad913bb1fd8e7da..22c6a9fb16bad02ef52b89995c5d4f705b7cd246 100644 (file)
@@ -73,7 +73,7 @@ static int do_rados_getxattrs(rados_ioctx_t io_ctx, const char *oid,
                if (ret) {
                        printf("rados_getxattrs(%s): rados_getxattrs_next "
                                "returned error %d\n", oid, ret);
-                       return 1;
+                       goto out_err;
                }
                if (!key)
                        break;
@@ -87,17 +87,21 @@ static int do_rados_getxattrs(rados_ioctx_t io_ctx, const char *oid,
                        printf("rados_getxattrs(%s): got key %s, but the "
                                "value was %s rather than %s.\n",
                                oid, key, val, exvals[i]);
-                       return 1;
+                       goto out_err;
                }
        }
        if (nfound != nval) {
                printf("rados_getxattrs(%s): only found %d extended attributes. "
                        "Expected %d\n", oid, nfound, nval);
-               return 1;
+               goto out_err;
        }
        rados_getxattrs_end(iter);
        printf("rados_getxattrs(%s)\n", oid);
        return 0;
+
+out_err:
+       rados_getxattrs_end(iter);
+       return 1;
 }
 
 static int testrados(void)