diff options
author | Sage Weil <sage@inktank.com> | 2013-05-09 08:50:05 -0700 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-05-09 10:48:59 -0700 |
commit | ad073c2b03b03a796753d1fd98ea0df28e75d39b (patch) | |
tree | e6aeed3c389c340ad407149d896490f49ee5d4cd | |
parent | 110a823fd43a60d829641ea03796331a37099244 (diff) | |
download | ceph-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.cc | 10 |
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> |