summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-05-09 08:50:05 -0700
committerSage Weil <sage@inktank.com>2013-05-09 10:48:59 -0700
commitad073c2b03b03a796753d1fd98ea0df28e75d39b (patch)
treee6aeed3c389c340ad407149d896490f49ee5d4cd
parent110a823fd43a60d829641ea03796331a37099244 (diff)
downloadceph-ad073c2b03b03a796753d1fd98ea0df28e75d39b.tar.gz
radosgw-admin: fix fd leak in read_input()
Signed-off-by: Sage Weil <sage@inktank.com>
-rw-r--r--src/rgw/rgw_admin.cc10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/rgw/rgw_admin.cc b/src/rgw/rgw_admin.cc
index edbe887c208..fff32ca435d 100644
--- a/src/rgw/rgw_admin.cc
+++ b/src/rgw/rgw_admin.cc
@@ -399,24 +399,26 @@ static int read_input(const string& infile, bufferlist& bl)
#define READ_CHUNK 8196
int r;
+ int err;
do {
char buf[READ_CHUNK];
r = read(fd, buf, READ_CHUNK);
if (r < 0) {
- int err = -errno;
+ err = -errno;
cerr << "error while reading input" << std::endl;
- return err;
+ goto out;
}
bl.append(buf, r);
} while (r > 0);
+ err = 0;
+ out:
if (infile.size()) {
close(fd);
}
-
- return 0;
+ return err;
}
template <class T>