From 883d1807630200170db6aece0f85f1c58a8f10b0 Mon Sep 17 00:00:00 2001 From: Colin Patrick McCabe Date: Tue, 10 May 2011 12:58:20 -0700 Subject: [PATCH] librgw: small error handling fix Signed-off-by: Colin McCabe --- src/rgw/librgw.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/rgw/librgw.cc b/src/rgw/librgw.cc index 06dfc7f097653..5034a8964d85e 100644 --- a/src/rgw/librgw.cc +++ b/src/rgw/librgw.cc @@ -39,6 +39,8 @@ int librgw_acl_bin2xml(const char *bin, int bin_len, char **xml) // convert to XML C string *xml = strdup(ss.str().c_str()); + if (!*xml) + return -ENOBUFS; return 0; } catch (...) { @@ -53,6 +55,7 @@ void librgw_free_xml(char *xml) int librgw_acl_xml2bin(const char *xml, char **bin, int *bin_len) { + char *bin_ = NULL; try { RGWXMLParser parser; if (!parser.init()) { @@ -69,7 +72,7 @@ int librgw_acl_xml2bin(const char *xml, char **bin, int *bin_len) bufferlist bl; policy->encode(bl); - char *bin_ = (char*)malloc(bl.length()); + bin_ = (char*)malloc(bl.length()); if (!bin_) { return -ENOBUFS; } @@ -81,6 +84,9 @@ int librgw_acl_xml2bin(const char *xml, char **bin, int *bin_len) return 0; } catch (...) { + if (!bin_) + free(bin_); + bin_ = NULL; return -2000; } } -- 2.39.5